Also mit folgendem Eventhandler wird statt des Datenbankfeldes ein entsprechendes Icon angezeigt
Delphi-Quellcode:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var Icon: TBitmap;
begin
Icon:=TBitmap.Create;
if (Column.FieldName='SHARES' ) then begin
with DBGrid1.Canvas do begin
Brush.Color:=clWhite;
FillRect(Rect);
if (Table1.FieldByName('SHARES').Value>4500)
then
ImageList1.GetBitmap(1,Icon)
else
ImageList1.GetBitmap(0,Icon);
Draw(round((Rect.Left+Rect.Right-Icon.Width)/2),Rect.Top,Icon);
end;
end;
p.s mich würde auch interessieren wie das bei einem normalen DbGrid Feld funktioniert und ich möchte nicht auf 3.Komponenten von anderen Herstellern ausweichen. Habe das TMS Components Pro mit deren ADVDBStringGrid liese sich das leicht realisieren. Ich kann auch über kein Stringgrid gehen da das Dataset über 200.000 Records fassen kann und das laden des StringGrid warscheinlich viel länger dauert als mit einem DbGrid (die Sätze sind notwendig - sind alle Belege einen grossen Firma der letzten 10 Jahre)
für jeden lösungsansatz bin ich dankbar