"EhLib.Com" https://forum.ehlib.com/ru/ |
|
Отрисовка ячейки DBGridEh в AdvDrawDataCell https://forum.ehlib.com/ru/viewtopic.php?f=4&t=3274 |
Страница 1 из 1 |
Автор: | ADSoft [ 04 ноя 2022, 07:52 ] | ||
Заголовок сообщения: | Отрисовка ячейки DBGridEh в AdvDrawDataCell | ||
Добрый день. Пытаюсь получить из DBGridEh что-то типа чата. Для этого хочу отрисовать RoundRect в качестве фона для текста в событии AdvDrawDataCell DBGridEh (или Column, неважно, результат тот же). В результате, При запуске приложения: 1. В первой ячейке первой колонки нижний правый угол не округляется 2. В первой ячейке первой колонки текст смещается вправо и вниз на какой-то непонятный отступ 3. Во всех остальных ячейках первой колонки текст не отображается 4. Во всех ячейках второй колонки текст также не отображается После прокрутки вниз и обратно вверх: 1. Текст в ячейках первой колонки отображается, но со смещением вправо 2. Во всех ячейках второй колонки текст не отображается После повторной прокрутки вниз: 1. Текст в ячейках первой колонки либо не отображается, либо отображается со смещением вправо и большим смещением вниз 2. Во всех ячейках второй колонки текст по-прежнему не отображается Пробовал и с группировкой и без - результат тот же. Вот весь текст события AdvDrawDataCell Код: if not Column.Field.IsNull then begin Sender.Canvas.Brush.Color := clWhite; Sender.Canvas.FillRect(ARect); if Column.Index = 0 then Sender.Canvas.Pen.Color := clSkyBlue else Sender.Canvas.Pen.Color := clWebTan; Sender.Canvas.Brush.Color := Sender.Canvas.Pen.Color; Sender.Canvas.RoundRect(ARect, 30, 30); Sender.DrawColumnDataCellMainContent(Cell, AreaCell, Column, ARect, Params, ARect); Processed := True; end; Проект во вложении (к нему нужно приложить Biolife.mdb из папки Demos\Data). Тестировался на версии 10.2.034 в RS 11.2 под Win 11. Подскажите, пожалуйста, что или где я делаю не так, или это всё-таки баги? И ещё, если не трудно, подскажите как можно убрать кнопку для сворачивания и разворачивания группы? Заранее, спасибо!
|
Автор: | ADSoft [ 09 ноя 2022, 15:25 ] |
Заголовок сообщения: | Re: Отрисовка ячейки DBGridEh в AdvDrawDataCell |
Не поленился, поставил 11.0.007 Beta, чтобы проверить. Результат тот же, только теперь текст всегда отображается только в 1-й значащей ячейке 1-й колонки и со сдвигами: Всё остальное - так же Да, и ещё, в Design Time сам DBGridEh стал совершенно однотонным, как будто его и нет на форме (но, он там есть! ) : |
Автор: | EhLibSupport [ 10 ноя 2022, 09:48 ] |
Заголовок сообщения: | Re: Отрисовка ячейки DBGridEh в AdvDrawDataCell |
Добрый день. Метод DrawColumnDataCellMainContent последним параметром требует прямоугольник в координатах относительно верхнего левого угла ячейки. Для отрисовки текста используйте функцию WriteTextEh например. Код: procedure TForm4.DBGridEh1AdvDrawDataCell(Sender: TCustomDBGridEh; Cell, AreaCell: TGridCoord; Column: TColumnEh;
const ARect: TRect; var Params: TColCellParamsEh; var Processed: Boolean); begin if not Column.Field.IsNull then begin Sender.Canvas.Brush.Color := clWhite; Sender.Canvas.FillRect(ARect); if Column.Index = 0 then Sender.Canvas.Pen.Color := clSkyBlue else Sender.Canvas.Pen.Color := clWebTan; Sender.Canvas.Brush.Color := Sender.Canvas.Pen.Color; Sender.Canvas.RoundRect(ARect, 30, 30); ARect.Inflate(-10, -10); WriteTextEh(Sender.Canvas, ARect, False, 0, 0, Params.Text, Params.Alignment, TTextLayout.tlTop, True, False, 0, 0, False, False); // Sender.DrawColumnDataCellMainContent(Cell, AreaCell, Column, ARect, Params, ARect); // Sender.DefaultDrawColumnDataCell(Cell, AreaCell, Column, ARect, Params); Processed := True; end; end; |
Автор: | ADSoft [ 10 ноя 2022, 15:08 ] |
Заголовок сообщения: | Re: Отрисовка ячейки DBGridEh в AdvDrawDataCell |
Ясно, спасибо! А насчёт второго вопроса, по поводу скрытия кнопки сворачивания/разворачивания группы, есть какое-то решение? |
Страница 1 из 1 | Часовой пояс: UTC |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |