Hier ein Beispiel, wie man rote und grüne Rähmchen im Grid zeichnet.
In den Options sind die Flag goVertline und goHorLine auf False gestellt.
Delphi-Quellcode:
var
Zeile : integer = 1;
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
canvas : TCanvas;
begin
canvas := Stringgrid1.canvas;
// Textausgabe
Canvas.TextRect(Rect, Rect.Left+2, Rect.Top+2, StringGrid1.Cells[ACol, ARow]);
if (ARow = Zeile) and (ACol >= 1) then // nur in der best. Zeile
begin
if (ACol mod 2) = 0 then
canvas.Pen.Color := clRed
else
canvas.Pen.Color := clGreen;
canvas.Brush.Style := bsClear;
InflateRect(Rect, 1, 1); // Rechteck um 1 Pixel grösser machen
canvas.Rectangle(rect); // Rähmchen malen
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Inc(zeile);
StringGrid1.Invalidate; // StringGrid soll neu gezeichnet werden
end;
Das Beispiel hat noch ein kleines Problem: InflateRect() vergrössert das Rechteck in nach links, rechts, oben und unten. Dabei kommt es zu Überschneidungen. Wenn man das nicht mag, muss man InflateRect durch etwas anderes ersetzen.