Einzelnen Beitrag anzeigen

TRBB

Registriert seit: 31. Okt 2007
18 Beiträge
 
Delphi 7 Professional
 
#1

Stringgrid Zeilen einfärben funktioniert nicht

  Alt 16. Nov 2007, 14:29
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
  Mit Zitat antworten Zitat