Components for Delphi and C++ Builder.

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

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




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
СообщениеДобавлено: 31 июл 2019, 18:28 
Не в сети

Зарегистрирован: 16 янв 2012, 17:57
Сообщений: 41
Ключевое - без создания колонок в дизайне.

Назначение Params.ImageIndex в событии AdvDrawDataCell рисует картинку в центре ячейки, текст пропадает.

При ручной прорисовке картинки в DrawDataCell - пропадает Selected.

Пока сделал так:
Код:
procedure TfmActionsRoles.grDataDrawDataCell(Sender: TObject; const Rect: TRect; Field: TField;
  State: TGridDrawState);
begin
     if gdSelected in State then
      grData.Canvas.Brush.Color := clAqua;
     grData.Canvas.FillRect(Rect);

     if (Field = mtDataTitle) and (mtDataImageIndex.AsInteger >= 0) then
     begin
       Rect.TopLeft.Offset(2, 0);
       DrawBitmapFromImageList(grData.Canvas, Rect, TImageList(dmData.ilMain), mtDataImageIndex.AsInteger, afLeft + afVCenter);
       Rect.TopLeft.Offset(18, 0);
     end;

     grData.DefaultDrawDataCell(Rect, Field, State);
end;

но Selected рисуется, естественно, не так, как в прочих формах проекта.
Версия 9.3.011, без исходников.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 01 авг 2019, 02:28 
Не в сети

Зарегистрирован: 15 мар 2018, 15:31
Сообщений: 48
http://forum.ehlib.com/ru/viewtopic.php?f=4&t=2813

Вот эта тема не поможет?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 01 авг 2019, 19:32 
Не в сети

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

Цитата:
Ключевое - без создания колонок в дизайне.


После открытия датасета надо настроить нужный столбец по имени поля для отображения картинки и текста.

Код:
procedure TForm1.MemTableEh1AfterOpen(DataSet: TDataSet);
begin
  DBGridEh1.FieldColumns['Continent'].ImageList := ilPaymentType;
  DBGridEh1.FieldColumns['Continent'].ShowImageAndText := True;
end;


В событии TDBGridEh.OnAdvDrawDataCell устанавливать значение индекса картинки

Код:
procedure TForm1.DBGridEh1AdvDrawDataCell(Sender: TCustomDBGridEh; Cell,
  AreaCell: TGridCoord; Column: TColumnEh; const ARect: TRect;
  var Params: TColCellParamsEh; var Processed: Boolean);
begin
  if (Column.FieldName = 'Continent') then
  begin
    if Column.Field.AsString = 'South America' then
      Params.ImageIndex := 1
    else if Column.Field.AsString = 'North America' then
      Params.ImageIndex := 0
    else
      Params.ImageIndex := -1;
  end;
end;


Вложения:
sshot-51.png
sshot-51.png [ 28.16 KiB | Просмотров: 921 ]

_________________
Best regards
EhLib support Team
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 05 авг 2019, 18:46 
Не в сети

Зарегистрирован: 16 янв 2012, 17:57
Сообщений: 41
Спасибо, отлично работает!


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

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


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

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


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

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