Hallo,
ich habe hier ein "tolles" Phänomen:
ich habe ein Stringgrid oder ein Grid (das macht keinen unterschied) und fülle dies mit daten und mehreren spalten, sodass man nach rechts scrollen muss, um alle spalten sehen zu können. Nun habe ich in diesem Grid AlternatingRowColors eingestellt, welche soweit auch funktionieren, bis man nach rechts scrollt und bis dahin noch nicht sichtbaren bereich anzeigt. Hier wird das AlternatingRowColor nur bis zur ursprünglichen anzeigegrenze angezeigt (egal ob in einer Zelle oder an der Kante). Auch die Selektierung einer Zeile wird nur bis hier hin angezeigt.
Für die Zeilenfarben habe ich folgenden code gefunden, welcher auch funktioniert:
http://stackoverflow.com/questions/3...s-screen-width
Delphi-Quellcode:
procedure TForm1.StringGrid1DrawColumnCell(Sender: TObject; const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF; const Row: Integer; const Value: TValue; const State: TGridDrawStates);
var
T, T2: TRectF;
begin
if Row mod 2 = 1 then
begin
with Canvas do
begin
Fill.Kind := TBrushKind.Solid;
Fill.Color := $FFF5802D;
end;
T := Bounds;
if TStringGrid(Sender).ColumnCount - 1 = Column.Index then
T.Right := Self.Width;
Canvas.FillRect(T, 0, 0, [], 0.5);
end;
end;
Nur verzögert dieser Code natürlich das anzeigen des Grids. Ausserdem wird dadurch die Schrift blasser, da das Canvas darüber liegt. Auch wird hiermit das Problem mit der Selektierten Zeile nicht gelöst.
Hat hier jemand eine Idee, wie ich die Anzeige funktionstüchtig machen kann?