Einzelnen Beitrag anzeigen

Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#2

Re: StringGrid Zelle bei ButtonKlick färben?

  Alt 22. Mai 2007, 11:04
moin,
du müsstest in der Zelle irgendwie hinterlegen, ob und ggf. wie diese gefärbt werden soll (hintergrundklasse (TStringgrid.Objects), string-prefix, etc.) und dies dann im OnDrawCell auswerten. Nicht vergessen, die Eigenschaft DefaultDrawing des Stringgrids auf false zu setzen, damit das OwnerDraw aktiviert wird.
bei verwendung einer klasse sicherstellen, dass die Objekte auch wieder ordnungsgemäß freigegeben werden (tückisch bei variabler spalten-/zeilenanzahl)
Du kannst auch in TStringgrid.Objects auch nur ein Flag hinterlegen (bis 32Bit integer), ist vielleicht am einfachsten. Zugreifen dann einfach per hardcast.

stringgrid1.objects[0,0]:=TObject(1); if integer(stringgrid1.objects[0,0])=1 then ... das OnDrawCell sieht dann so in etwa aus:
Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; Col, Row: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  (sender as TStringgrid).canvas.Brush.color:=(sender as TStringgrid).color;
  if integer(stringgrid1.objects[col,row])=1 then
    (sender as TStringgrid).canvas.Brush.color:=clgreen;
  (sender as TStringgrid).canvas.FillRect(rect);
  (sender as TStringgrid).canvas.TextOut(rect.left+2,rect.top+2,(sender as TStringgrid).Cells[col,row]);
end;
HTH Frank
  Mit Zitat antworten Zitat