// Die Titelleiste eines DBGrid wird selbst gestaltet (Font, Bild). Allerdings
// wird dazu eine neue Klasse von
TDBGrid abgeleitet. Dieses Beispiel geht
// davon aus, dass mit den Komponenten
TTable und TDataSource gearbeitet wird.



// Getestet mit D4 unter XP

type 
  TDBX = class(TDBGrid) 
  public 
    procedure DrawCell(ACol, ARow: Integer; 
      Rect: TRect; State: TGridDrawState); override; 
  end; 
 
var 
  DBG: TDBX; 
  bm: TBitmap; 
 
procedure TForm1.FormCreate(Sender: TObject); 
begin 
  bm := TBitmap.create; 
  bm.loadfromfile('D:\Bilder\Led1.bmp'); 
  bm.transparent := true; 
  DBG := TDBX.create(self); 
  with DBG do begin 
    left := 100; 
    top := 100; 
    width := 500; 
    DataSource := DataSource1; 
    parent := self; 
  end; 
  Table1.active := true; 
end; 
 
procedure TForm1.FormDestroy(Sender: TObject); 
begin 
  bm.free; 
  Table1.active := false; 
  DBG.free; 
end; 
 
procedure TDBX.DrawCell(ACol, ARow: Integer; 
  Rect: TRect; State: TGridDrawState); 
begin 
  if ARow = 0 then begin 
    with canvas do begin 
      Font.Color := clBlue; // <------------ z.B. 
      brush.color := clBtnFace; 
      fillrect(Rect); 
      pen.color := clBtnHighLight; 
      moveto(Rect.Left, pred(Rect.Bottom)); 
      lineto(Rect.Left, Rect.Top); 
      lineto(Rect.Right, Rect.Top); 
      pen.color := clBTnShadow; 
      moveto(succ(Rect.Left), pred(Rect.Bottom)); 
      lineto(pred(Rect.Right), pred(Rect.Bottom)); 
      lineto(pred(Rect.Right), Rect.Top); 
      if aCol = 1 then begin  // <------------ Bild in erster Spalte 
        draw(succ(Rect.Left), succ(Rect.top), bm); 
        inc(Rect.Left, bm.width); 
      end; 
      inflaterect(Rect, -2, -2); 
      if aCol > 0 then 
        drawtext(handle, PChar(columns[pred(aCol)].fieldname), -1, Rect, 
          DT_SingleLine or DT_VCenter); 
    end; 
  end else inherited; 
end; 



 

Zugriffe seit 6.9.2001 auf Delphi-Ecke