Показ изображений в DBGrid
После небольшого раздумья я решил прислать своего потомка DBGrid, который позволяет выводить изображения, благо добавочного кодирования не так много.
Код компонента:
{ // DBPICGRD.PAS (C) // ВСЕ ПРАВА ЗАЩИЩЕНЫ. // // ОПИСАНИЕ: // Компонент DBGrid, способный отображать графику в ячейках. } unit DBPicGrd; interface uses DBGrids, DB, DBTables, Grids, WinTypes, Classes, Graphics;
type TDBPicGrid = class(TDBGrid)
protected
procedure DrawDataCell(const Rect: TRect;
Field: TField; State: TGridDrawState); override;
public
constructor Create(AOwner : TComponent); override;
published
property DefaultDrawing default False;
end;
procedure Register; implementation constructor TDBPicGrid.Create(AOwner : TComponent); begin inherited Create(AOwner);
DefaultDrawing := False;
end;procedure TDBPicGrid.DrawDataCell(const Rect: TRect; Field: TField; State: TGridDrawState); var bmp : TBitmap;
beginwith Canvas do
begin
FillRect(Rect);
if Field is TGraphicField then
try
bmp := TBitmap.Create;
bmp.Assign(Field);
Draw(Rect.Left, Rect.Top, bmp);
finally
bmp.Free;
end
else
TextOut(Rect.Left, Rect.Top, Field.Text);
end;
end;procedure Register; begin RegisterComponents('Custom', [TDBPicGrid]);
end;end. |