Hallo Freunde,
also habe hier unter CRDBGrid1DrawColumnCell siehe Quelltext,
eine if Anweisung!
Soweit auch alles OK!
Mein Problem ist, wenn das Grid leer ist, zum Beispiel durch löschen der Datensätze!
Merkert das Grid, also die if Anweisung!
Habe die Anweisung mal ausgeklammert {} dann läuft alles!
Was kann ich da machen?
Delphi-Quellcode:
procedure TForm1.CRDBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
i : Integer;
Wert: string;
begin
Wert := CRDBGrid1.DataSource.DataSet.FieldByName('Zuordnung').Value;
if Wert = '1 sofort' then begin
CRDBGrid1.Canvas.Brush.Color := clred;
CRDBGrid1.Canvas.Font.Color := clblack;
end else
if Wert = '0 Eingang' then begin
CRDBGrid1.Canvas.Brush.Color := clyellow;
CRDBGrid1.Canvas.Font.Color := clblack;
end else
if Wert = '3 abwartend' then begin
CRDBGrid1.Canvas.Brush.Color := clAqua;
CRDBGrid1.Canvas.Font.Color := clblack;
end else
if Wert = '9 Fehler' then begin
CRDBGrid1.Canvas.Brush.Color := clblack;
CRDBGrid1.Canvas.Font.Color := clred;
end else
if Wert = '98 gesendet' then begin
CRDBGrid1.Canvas.Brush.Color := cllime;
CRDBGrid1.Canvas.Font.Color := clblack;
end else begin
end;
CRDBGRid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
begin
CRDBGRid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
if (gdSelected in State) then
begin
Form1.CRDBGrid1.Canvas.Brush.Color := clHighlight;
Form1.CRDBGrid1.Canvas.Font.Color:=clblack;
end;
form1.crDBGrid1.Canvas.FillRect(Rect);
form1.crDBGrid1.Canvas.TextOut(Rect.Left + 2, Rect.Top + 1, Column.Field.AsString);
begin
with MyTable1 do
for i := 5 to Pred(Fields.Count) do
Fields[i].DisplayWidth := 255;
end;
end;
end;