Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Stringgrid zeilen färben (https://www.delphipraxis.net/175827-stringgrid-zeilen-faerben.html)

dummzeuch 6. Jul 2024 10:19

AW: Stringgrid zeilen färben
 
Das Du vorhast, geht nur mit OwnerDrawing. Sonst wird das, was Du zeichnest beim nächsten Redraw automatisch wieder übermalt.

Und dazu gibt es in den vorigen Antworten diverse Beispiele.

himitsu 6. Jul 2024 10:24

AW: Stringgrid zeilen färben
 
und OnDrawCell

DieFliege 6. Jul 2024 10:56

AW: Stringgrid zeilen färben
 
... ok, Danke euch beiden. Da ich bereits ein StringGrid habe und nutze, mein Gedanke sich aber wohl nicht "einfach" umsetzen lässt, wurde der Gedanke an "bunte Zeilen" verworfen.

Danke schön & schönes Wochenende :-)

jaenicke 6. Jul 2024 11:33

AW: Stringgrid zeilen färben
 
Zitat:

Zitat von DieFliege (Beitrag 1538630)
... ok, Danke euch beiden. Da ich bereits ein StringGrid habe und nutze, mein Gedanke sich aber wohl nicht "einfach" umsetzen lässt, wurde der Gedanke an "bunte Zeilen" verworfen.

Das ist sogar sehr einfach. Du musst es nur halt machen wie beschrieben...

Du musst darauf reagieren, dass der Inhalt neu gezeichnet werden muss. Deshalb bringt es nichts, wenn du es nur einmalig per Buttonklick zeichnest. Stell DefaultDrawing auf False, dann kannst du im OnDrawCell z.B. das machen:
Delphi-Quellcode:
procedure TForm.StringGridDrawCell(Sender: TObject; ACol, ARow: LongInt; Rect: TRect; State: TGridDrawState);
var
  Grid: TStringGrid;
begin
  Grid := Sender as TStringGrid;
  if gdFixed in State then
  begin
    Grid.Canvas.Brush.Color := clInactiveCaption;
    Grid.Canvas.Font.Color := clBlack;
  end
  else
  if gdSelected in State then
  begin
    Grid.Canvas.Brush.Color := clHighlight;
    Grid.Canvas.Font.Color := clHighlightText;
  end
  else
  begin
    if Grid.Cells[ACol, ARow] = 'x' then
      Grid.Canvas.Brush.Color := clRed
    else
      Grid.Canvas.Brush.Color := clWindow;
    Grid.Canvas.Font.Color := clWindowText;
  end;
  Grid.Canvas.FillRect(Rect);
  Grid.Canvas.TextOut(Rect.Left + 3, Rect.Top + 3, Grid.Cells[ACol, ARow]);
end;

DieFliege 6. Jul 2024 12:34

AW: Stringgrid zeilen färben
 
Hallo Sebastian,

vielen Dank, nun habe ich es verstanden, was ihr gemeint habt.

Jetzt versuche ich nicht nur eine Zelle zu färben, sondern die ganze Zeile - Das sollte ich aber hinbekommen, wenn ich den Code komplett kapiert habe ;-)

Vielen Dank noch mal

LG DieFliege

TUhr 6. Jul 2024 15:43

AW: Stringgrid zeilen färben
 
Hallo,

Du mußt Deinen Code bei OnDrawCell des Grid's unterbringen.

MfG

himitsu 6. Jul 2024 16:38

AW: Stringgrid zeilen färben
 
Zitat:

Delphi-Quellcode:
if gdSelected in State

Bei der einzelnen Zellen/Spalten, könnte man noch überlegen die Reihenfolge zu ändern.
Bei der ganzen Zeile wäre es aber ungünstig, wenn sie komplett andersfarbig wird und die blaue Selektion vollständig überdeckt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:37 Uhr.
Seite 2 von 2     12   

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