Hi haalmu,
ich bin mir nicht vollkommen klar geworden, was du jetzt eigentlich willst. Mit dieser Erweiterung wird die aktuelle Zeile, unabhängig von deiner "Tabellenpapier"-Anzeige dargestellt. Die Anzeige der aktiven Zelle zur Bearbeitung der Daten wurde so belassen.
In diesem Beispiel hat die aktuelle Zelle einen weissen Hintergrund und blaue Schrift.
Delphi-Quellcode:
procedure TForm1.tsDBGrid1GetDrawInfo(Sender: TObject; DataCol: Integer;
DataRow: Variant; var DrawInfo: TtsDrawInfo);
begin
if (tsDBGrid1.CurrentDataRow = DataRow) then begin
DrawInfo.Color := clWhite;
DrawInfo.Font.Color := clBlue;
end else begin
if Odd(tsDBGrid1.DataSource.DataSet.RecNo) and (tsDBGrid1.GridStatus = grNormal) then begin
DrawInfo.Color := clAqua;
tsDBGrid1.FocusColor := clAqua;
end else begin
DrawInfo.Color := clInfoBK;
tsDBGrid1.FocusColor := clInfoBK;
end;
end;
end;
procedure TForm1.tsDBGrid1RowChanged(Sender: TObject; OldRow, NewRow: Variant);
var
iRow, iCol:integer;
begin
iRow := tsDBGrid1.DisplayRownr[OldRow];
for iCol := 1 to tsDBGrid1.Cols do
tsDBGrid1.CellInvalidate(iCol, iRow);
iRow := tsDBGrid1.DisplayRownr[NewRow];
for iCol := 1 to tsDBGrid1.Cols do
tsDBGrid1.CellInvalidate(iCol, iRow);
end;
Grüsse Gremlin