Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Stringgrid Zeilen einfärben funktioniert nicht (https://www.delphipraxis.net/103493-stringgrid-zeilen-einfaerben-funktioniert-nicht.html)

TRBB 16. Nov 2007 13:29


Stringgrid Zeilen einfärben funktioniert nicht
 
Guten Tag,
ich habe mal wieder ein Problem:
Ich will manche Zeilen (bzw. Zellen) im StringGrid einfärben doch die Farbe flackert nur einmal kurz (kaum sichtbar) auf und färbt sich dann wieder in die alte Farbe.

Hier meine Funktionen die ich nutze um das StringGrid zu färben und zu füllen.

Delphi-Quellcode:
//---------------------------------------------------------
{ Aktuelle Liste der Filme anzeigen }
procedure TSearchFrame.showMovies();
var i: integer;
begin
  ResultStringGrid.RowCount := 2;
  if High(movies) > 0 Then begin
    ResultStringGrid.RowCount := High(movies)+1;
    //-->
    for i := 0 to High(movies) do
    begin
      ResultStringGrid.Cells[0,i+1] := movies[i].name;
      ResultStringGrid.Cells[1,i+1] := movies[i].genre;
      ResultStringGrid.Cells[2,i+1] := IntToStr(movies[i].dvd);
      paintCell(1,i+1); // Zum testen erst einmal die 2. Spalte färben
    end;
  end else begin
    ResultStringGrid.Cells[0,1] := '';
    ResultStringGrid.Cells[1,1] := '';
    ResultStringGrid.Cells[2,1] := '';
  end;
end;

//---------------------------------------------------------
{ Zelle färben }
procedure TSearchFrame.paintCell(x,y: integer);
var
  rect: TRect;
begin
  rect := ResultStringGrid.CellRect(x,y);
  ResultStringGrid.Canvas.Brush.Color := clYellow;
  ResultStringGrid.Canvas.FillRect(rect);
end;
Hoffe auf eure Hilfe

Grüße
TRBB


Edit (Lösung):
Hierzu muss man das DrawCell-Ereigniss verwenden.
Dieses wird jedes mal aufgerufen wenn das StringGrid neu gezeichnet wird.
Beispiel auf swissdelphicenter.ch

Bernhard Geyer 16. Nov 2007 13:31

Re: Stringgrid Zeilen einfärben funktioniert nicht
 
Du mußt die Zeichenoperationen im OnDraw(Cell?)-Event des Grids durchführen.

Deep-Sea 16. Nov 2007 13:33

Re: Stringgrid Zeilen einfärben funktioniert nicht
 
http://www.swissdelphicenter.ch/de/showcode.php?id=273

TRBB 16. Nov 2007 13:56

Re: Stringgrid Zeilen einfärben funktioniert nicht
 
Schon mal vielen Dank.
Aber wann wird diese die Prozedur denn aufgerufen?

Deep-Sea 16. Nov 2007 13:59

Re: Stringgrid Zeilen einfärben funktioniert nicht
 
Zitat:

Zitat von TRBB
Schon mal vielen Dank.
Aber wann wird diese die Prozedur denn aufgerufen?

Wenn die Komponente neu gezeichnet werden muss. Damit hast du normalerweise nichts zu tun :stupid:

TRBB 16. Nov 2007 14:05

Re: Stringgrid Zeilen einfärben funktioniert nicht
 
Ich will nur bestimmte Zeilen (und das sind je nach Daten immer wieder andere) verschiedene Zeilen färben.

Wird diese Funktion immer dann aufgerufen wenn irgendeine Zeile beschriftet oder neu erstellt wird?

TRBB 16. Nov 2007 14:10

Re: Stringgrid Zeilen einfärben funktioniert nicht
 
Ahh hab schon.
Vielen Dank für eure schnelle Hilfe.

Mfg
TRBB


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz