Components for Delphi and C++ Builder.

Перейти в английский форум
Перейти на EhLib.com
Текущее время: 28 мар 2024, 06:26

Часовой пояс: UTC




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Отрисовка ячейки DBGridEh в AdvDrawDataCell
СообщениеДобавлено: 04 ноя 2022, 07:52 
Не в сети

Зарегистрирован: 28 июл 2012, 18:07
Сообщений: 43
Добрый день.

Пытаюсь получить из 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.

Подскажите, пожалуйста, что или где я делаю не так, или это всё-таки баги?
И ещё, если не трудно, подскажите как можно убрать кнопку для сворачивания и разворачивания группы?
Заранее, спасибо!


Вложения:
Комментарий к файлу: Project4.zip
Project4.zip [2.22 KiB]
Скачиваний: 58
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 09 ноя 2022, 15:25 
Не в сети

Зарегистрирован: 28 июл 2012, 18:07
Сообщений: 43
Не поленился, поставил 11.0.007 Beta, чтобы проверить.
Результат тот же, только теперь текст всегда отображается только в 1-й значащей ячейке 1-й колонки и со сдвигами:
Изображение
Всё остальное - так же :(

Да, и ещё, в Design Time сам DBGridEh стал совершенно однотонным, как будто его и нет на форме (но, он там есть! :shock: ) :
Изображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 10 ноя 2022, 09:48 
Не в сети

Зарегистрирован: 21 дек 2011, 18:48
Сообщений: 1546
Добрый день.

Метод 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;

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 10 ноя 2022, 15:08 
Не в сети

Зарегистрирован: 28 июл 2012, 18:07
Сообщений: 43
Ясно, спасибо!
А насчёт второго вопроса, по поводу скрытия кнопки сворачивания/разворачивания группы, есть какое-то решение?


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB