hi leutz!
mir ist grad folgendes problem bei meiner arbeit aufgetaucht:
ich hab ein stringgrid, und im ondrawcell ereignis desselben prüfe ich, ob einzelne zellen leer sind oder nicht, und wenn etwas drin steht, dann soll er diese farblich blau zeichnen!
allerdings läuft da etwas schief! weil solange noch nichts drin steht, funktioniert das einwandfrei! sobald aber in einer zelle irgendwas steht, kann man die ganzen zellen dieser spalte durch anklicken blau färben!
das darf aber nicht sein!
die ersten beiden if funktionen färben zellen, deren kopf ein datum enthält farblich, sobald es zum we gehört!
Delphi-Quellcode:
procedure TfrmMain.grdAnzeigeDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
a : integer;
begin
if (dayoftheweek(strtodate(grdAnzeige.Cells[acol, 0])) = 6) and not (gdFixed in State) then
with grdAnzeige do
begin
Canvas.Brush.Color := $0000c3ff;
Canvas.FillRect(Rect);
Canvas.TextOut(Rect.Left+2, Rect.Top+2, Cells[ACol, ARow]);
end; //färben des sonnabends
if (dayoftheweek(strtodate(grdAnzeige.Cells[acol, 0])) = 7) and not (gdFixed in State) then
with grdAnzeige do
begin
Canvas.Brush.Color := clred;
Canvas.FillRect(Rect);
Canvas.TextOut(Rect.Left+2, Rect.Top+2, Cells[ACol, ARow]);
end; //färben des sonntages
for a := 2 to grdAnzeige.RowCount do //färben der zellen, wenn eintrag
begin //allerdings nur, wenn nicht zu
if grdAnzeige.Cells[acol,a] <> '' then //den oberen 2 zeilen gehört!
with grdAnzeige do
begin
canvas.Brush.Color := clskyblue;
canvas.FillRect(Rect);
canvas.TextOut(rect.Left + 2, rect.Top + 2, cells[acol, arow]);
end;
end;
end;
woran liegt das? hat einer ne idee???
mfg matthias