Thema: Delphi Stringgrid spinnt

Einzelnen Beitrag anzeigen

Raucherbein

Registriert seit: 3. Apr 2005
Ort: Freiberg/Sachsen
2 Beiträge
 
#1

Stringgrid spinnt

  Alt 10. Mai 2005, 11:34
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
  Mit Zitat antworten Zitat