Hallo,
ich habs gerade mal bei mir ausprobiert. Bei werden alle Texte Fett gezeichnet...
Im FormCreate-Ereignis habe ich FixedRows und RowCount des StringGrids auf 1 gesetzt.
Laut
OH ist dass soweit ja auch OK
Zitat:
Stellen Sie FixedRows nicht auf einen größeren Wert als RowCount - 1 ein.
Die oberste Zeile bleibt aber erst stehen, wenn ich RowCount auf zwei setzte. Es erscheinen dann aber immer noch alle Texte fett. Verstehe ich ja auch, denn strgrdCDListe. Row verändert sich erst, wenn man eine Zelle des StringGrid mit der Maus markiert. Ich zeig mal den Code ...
Delphi-Quellcode:
procedure TfrmMain.strgrdCDListeDrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var
txtcenter,
txtwidth : integer;
begin
Label1.Caption := 'strgrdCDListe.Row '+IntToStr(strgrdCDListe.Row); //zur Kontrolle
Label2.Caption := 'strgrdCDListe.fixedRow '+IntToStr(strgrdCDListe.FixedRows); // zur Kontrolle
with strgrdCDListe.Canvas do
begin
if strgrdCDListe.Row <= strgrdCDListe.FixedRows then
Font.Style := [fsBold];
if not Odd(ARow) then
begin
// Jede zweite farbig
Brush.Color := cl3DLight;
FillRect(Rect);
TextOut(Rect.Left+2, Rect.Top+2, strgrdCDListe.Cells[ACol,ARow]);
end;
// Text zentrieren und ausgeben
txtwidth := TextWidth(strgrdCDListe.Cells[ACol,ARow]);
txtcenter := Rect.Left + (Rect.Right - Rect.Left - txtwidth) div 2;
TextRect(Rect,txtcenter,Rect.Top+2,strgrdCDListe.Cells[ACol,ARow]);
end;
end;
Wie erkennt das DrawCell-Ereignis denn die Veränderung, ohne den Mausclick
?
Danke im voraus!
PS: Eine Frage nebenher. Gibt es eigentlich noch andere Farben, als die Vordefinierten? Ich bräuchte nämlich ein etwas helleres Grau als das obige cl3DLight.