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