![]() |
StringGrid einfärben
Hallo,
ich wollte ein StringGrid einfärben (4 Zeilen Geld, 3 Zeilen Rot, usw) Manuel mache ich das so :
Delphi-Quellcode:
hier werden die Zeilen 9, 10, 11, 12 eingefärbt.
procedure TMainForm.grd_SpieleDrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState); begin inherited; with (sender as TStringGrid) do begin if ((aRow = 9) or (aRow = 10) or (aRow = 11) or (aRow = 12)) then begin Canvas.Brush.Color := clGradientActiveCaption ; Canvas.FillRect(Rect); Canvas.TextOut(Rect.Left+2, Rect.Top+2, (sender as TStringGrid).Cells[ACol, ARow]); end; end; end; Ich habe 18 Farben, mit der ich das StringGrid einfärben muss. Würde ich das manuel machen, so würde der Quelltext ziemlich lang. Danke für eure Hilfe |
Re: StringGrid einfärben
Und nach welcher Logik soll gefärbt werden?
|
DP-Maintenance
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "VCL / WinForms / Controls" verschoben.
TStringGrid -> VCL |
Re: StringGrid einfärben
Ich bräuchte eine procedure oder function in der ich zum beispiel parameter übergebe.
ich stelle mir z.b vor procedure Einfaeben(aStringGrid: TStringGrid; aRow, aCol : integer; Farbe : TColor); nur weiß ich nicht genau wie man das mach. Bin noch nicht lange dabei. :oops: |
Re: StringGrid einfärben
So geht es nicht. du könntest aber einen Eigenschaftenarray, in dem du das ablegst, anlegen, welcher dann im Ownerdraw ausgewertet wird.
|
Re: StringGrid einfärben
:wiejetzt:
ich glaube das ist ein bißchen zu hoch für mich. kannst du mir nen kleinen tipp geben, wie ich anfangen muss. |
Re: StringGrid einfärben
Ich habe nur ein problem mit :
Delphi-Quellcode:
gibt es eine möglichkeit hier zu bestimmen, welche zeile übergeben wird ???
with (sender as TJVStringGrid) do
begin => if ((aRow = 9) or (aRow = 2) or (aRow = 5) or (aRow = 1)) then begin Canvas.Brush.Color := Farbe ; Canvas.FillRect(Rect); Canvas.TextOut(Rect.Left+2, Rect.Top+2, (sender as TJvStringGrid).Cells[ACol, ARow]); end; end; |
Re: StringGrid einfärben
Herzlich willkommen in der Delphi-PRAXiS, c.Stetter.
Deine Code-Zeilen stammen doch aus dem OnDrawCell-Handler, oder? Dort werden dir schon die Zell-Koordinaten (ACol, ARow) übermittelt. Du kannst mit einer Abbildungsfunktion arbeiten oder das CASE-Konstrukt direkt im Event-Handler reinschreiben:
Delphi-Quellcode:
Freundliche Grüße vom marabu
function LookupColor(index: Integer): TColor;
begin case index of 0..4: Result := clRed; 5..9: Result := clBlue; else if Odd(index) then Result := clGreen else Result := clWhite; end; end; procedure TMainForm.grd_SpieleDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin with (Sender as TJVStringGrid) do begin Canvas.Brush.Color := LookupColor(ARow); Canvas.FillRect(Rect); Canvas.TextOut(Rect.Left + 2, Rect.Top + 2, Cells[ACol, ARow]); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz