Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Stringgrid


Stan_1958 - Di 18.03.03 12:54
Titel: Stringgrid
Tag zusammen,

Warum wird bei folgendem Code die Zelle nicht anders eingefärbt?

Zunächst die Beschriftung der Zelle:

[code]stringgrid1.Cells[i,1]:= copy(wt,m,2);

Danach stehen an bestimmten Zellen die Buchstaben 'So' (für Sonntag).

Jetzt möchte ich gerne diese Zellen (die So) enthalten, mit einem roten Hintergrund haben!
[code]if stringgrid1.cells[i,1] = 'So' then
Stringgrid1.Canvas.Brush.Color := clred;

und da verließen Sie ihn!!!

Wenn ich den Code ergänze um:
[/code]Stringgrid1.canvas.fillrect(Rect)

kriege ich eine Fehlermeldung "nicht genügend wirkliche Parameter" :lol:

Wer kann mir freundlicherweise auf die Sprünge helfen?

Gruß Stan


Christian S. - Di 18.03.03 12:58

Hi!

Du musst die Zellen im DrawCell-Ereignis selbst zeichnen. So in etwa:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  if StringGrid1.Cells[ACol,ARow]='So' then
  with StringGrid1.Canvas do
  begin
    Brush.Color:=clRed;
    FillRect(Rect);
    TextRect(Rect,Rect.Left,Rect.Top,StringGrid1.Cells[ACol,ARow]);
  end;
end;


MfG,
Peter


Stan_1958 - Di 18.03.03 16:25

Hallo Peter,

....genial!

vielen Dank
Stan



Peter Lustig hat folgendes geschrieben:
Hi!

Du musst die Zellen im DrawCell-Ereignis selbst zeichnen. So in etwa:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  if StringGrid1.Cells[ACol,ARow]='So' then
  with StringGrid1.Canvas do
  begin
    Brush.Color:=clRed;
    FillRect(Rect);
    TextRect(Rect,Rect.Left,Rect.Top,StringGrid1.Cells[ACol,ARow]);
  end;
end;


MfG,
Peter