Советы пользователям Delphi и C++Builder


         

Как поместить графическое изображение в TDBGrid


Использование свойства Canvas компонента TDBGrid в методе OnDrawColumnCell позволяет не только выводить в ячейке текст методом TextOut, но и размещать в ячейках графические изображения. В этом случае используется метод Draw свойства Canvas.

Модифицируем наш пример, добавив на форму компонент TImageList и поместив в него несколько изображений.

Рис. 7 Компонент TImageLis с изображениями, помещаемыми в TDBGrid

Модифицируем код нашего приложения:

void __fastcall TForm1::DBGrid1DrawColumnCell(TObject *Sender, const TRect &Rect, int DataCol, TColumn *Column, TGridDrawState State) { Graphics::TBitmap *Im1; Im1= new Graphics::TBitmap; if (Column->FieldName=="VenueNo") { DBGrid1->Canvas->Brush->Color=clWhite; DBGrid1->Canvas->FillRect(Rect); if (Table1->FieldByName("VenueNo")->Value==1) { ImageList1->GetBitmap(0,Im1); } else { ImageList1->GetBitmap(2,Im1); } DBGrid1->Canvas->Draw((Rect.Left+Rect.Right-Im1->Width)/2,Rect.Top,Im1); } }

Соответствующий код для Delphi имеет вид:

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var Im1: TBitmap; begin Im1:=TBitmap.Create; if (Column.FieldName='VenueNo' ) then begin with DBGrid1.Canvas do begin Brush.Color:=clWhite; FillRect(Rect); if (Table1.FieldByName('VenueNo').Value=1) then begin ImageList1.GetBitmap(0,Im1); end else begin ImageList1.GetBitmap(2,Im1); end; Draw(round((Rect.Left+Rect.Right-Im1.Width)/2),Rect.Top,Im1); end; end; end;

Теперь в TDBGrid в колонке VenueNo находятся графические изображения.

Рис. 8 Вывод графических изображений в колонке



Содержание раздела