Einzelnen Beitrag anzeigen

toko

Registriert seit: 19. Apr 2005
40 Beiträge
 
#5

Re: in TStringgrid nur erste Zeile mit fettem Text

  Alt 28. Apr 2005, 00:02
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.
  Mit Zitat antworten Zitat