Autor Beitrag
Stan_1958
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36



BeitragVerfasst: Di 18.03.03 12:54 
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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Di 18.03.03 12:58 
Hi!

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

ausblenden 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

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Stan_1958 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36



BeitragVerfasst: 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:

ausblenden 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