Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Отображение иконок в TDBGrid и TDBGridEh


Автор: eddoc 2.2.2006, 01:55
Использую БД Акцесс 2003/TADOQuery/D7

Проблема в следующем:

при прорисовке в ячейках компонента TDBGrid c помощью
Код

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;DataCol: Integer; Column: TColumn; State: TGridDrawState);

begin

if (Column.FieldName = 'PoleNum') then
  begin
  TDBGrid(Sender).Canvas.FillRect(Rect);
  MyImageList.Draw(TDBGrid(Sender).Canvas,Rect.Left,Rect.Top,0);
  end;

end;

все отображается отлично.

Но стоит попробовать применить выше означенный код к компоненту TDBGridEh от EhLib
Код

procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject;  const Rect: TRect; DataCol: Integer; Column: ColumnEh; State: TGridDrawState);

begin

if (Column.FieldName = 'PoleText') then
  begin
  TDBGridEh(Sender).Canvas.FillRect(Rect);
  MyImageList.Draw(TDBGridEh(Sender).Canvas,Rect.Left,Rect.Top,1);
  end;

//перерисовываем сетку
TDBGridEh(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);

end;

то никаких картинок не отображается.

То, что получается воочию, можно посмотреть тут
http://aasso.de/club30/eddoc/MySelf/Images/ScreenGrids.jpg

В инете откопал статью А.Финка, где указывается,что для компонента TDBGridEh используются свойства Column[n].ImageList (это ImageList), Column[n].KeyList (строка-значение поля). Но вот как их применить в этом коде, честно говоря, не допер.

Кто-нить может помочь горе-программисту? ))

Автор: Vas 6.2.2006, 08:00
Вот код рисует без проблем, в зависимости от значения поля 'Error_run':
Код

Procedure TOsnForm.DBGEhAllPhoneDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumnEh;
  State: TGridDrawState);
Begin
  if (Column.Index=0) AND (TDBGridEh(Sender).DataSource.DataSet.FieldByName('Error_run').AsInteger<>0) then
    ImageList1.Draw(TDBGridEh(Sender).Canvas, Rect.Left, Rect.Top, TDBGridEh(Sender).DataSource.DataSet.FieldByName('Error_run').AsInteger+3);
End;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)