DrawGrid benutzen

Hallo
Ich habe gerade das DrawGrid entdeckt, dass ich für meine Zwecke vermutlich sehr gut nutzen könnte. Ich möchte nämlich kleine Bitmaps (TBitmap-Objekte - alle mit der selben Grösse) in die Zellen des DrawGrids zeichnen. Ausser der – leider sehr spärlichen – Hilfe von D2006 werde ich aber nicht schlau, da steht nur ich solle OnDrawCell implementieren und dort auf dem Canvas zeichnen… Aber wie komme ich an den Canvas einer Zelle und bringe da meinen TBitmap rein ?

Danke & Gruss
Roger

Hallo,

das ist super einfach.

Am Beispiel: Dein DrawGrid hat den Namen „DrawGrid1“ und befindet sich in Formular „Form1“. Dem Ereignis „OnDrawCell“ ist die Methode „TForm1.DrawGrid1DrawCell“ zugeordnet. In dieser Methode kannst du mit „DrawGrid1.Canvas“ direkt auf den Canvas des Drawgrids zugreifen. Die Zellenbegrenzung wird im Parameter „Rect“ übergeben. Folgendes Beispiel zeichnet zB. eine Ellipse in jede Zelle:

**procedure** TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
**begin**
 DrawGrid1.Canvas.Ellipse(Rect);
**end** ;

Statt DrawGrid1 direkt anzusprechen kannst du auch den Parameter „Sender“ benutzen, dessen Typ du in ein TDrawGrid „castest“:

 TDrawGrid(Sender).Canvas.Ellipse(Rect)

Das isses auch schon. Ich hoffe, damit kommst du weiter!

LG
Jochen

Ich habe gerade das DrawGrid entdeckt, dass ich für meine
Zwecke vermutlich sehr gut nutzen könnte. Ich möchte nämlich
kleine Bitmaps (TBitmap-Objekte - alle mit der selben Grösse)
in die Zellen des DrawGrids zeichnen. Ausser der – leider sehr
spärlichen – Hilfe von D2006 werde ich aber nicht schlau, da
steht nur ich solle OnDrawCell implementieren und dort auf dem
Canvas zeichnen… Aber wie komme ich an den Canvas einer Zelle
und bringe da meinen TBitmap rein ?

Danke & Gruss
Roger

Hallo Roger,

Aber wie komme ich an den Canvas einer Zelle
und bringe da meinen TBitmap rein ?

Wie Du an den Canvas in OnDrawCell kommst, hat Jo schon richtig erklärt, auf die Frage, wie Du das TBitmap reinbringst: benutze die Methode Canvas.Draw - der kannst Du ein TGraphic übergeben, das zu TBitmap kompatibel ist. z.B. wenn ‚bpBitmap‘ Dein TBitmap ist, das die Grafik enthält, bringst Du es so im OnDrawCell des Drawgrids in die linke obere Ecke der aktuellen Zelle:

Canvas.Draw(Rect.Left, Rect.Top, bpBitmap);

Schönen Gruß,
Rudy