Thema: Delphi ListBox => Zeile färben

Einzelnen Beitrag anzeigen

quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: ListBox => Zeile färben

  Alt 3. Okt 2007, 17:03
Soll es nur eine Bestimmte Zeile einfärben?

Delphi-Quellcode:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  with (control as TListBox) do
  begin
    if Index = 4 then //bei best. Zeile soll folgendes gelten
    begin
      Canvas.Brush.Color := clRed;
      Canvas.Pen.Color := clWhite;
      Canvas.Rectangle(Rect);
    end;
    Canvas.TextOut(Rect.Left + 1, Rect.Top + 1, Items[Index]);
  end;
end;
Geb keine Garantie das es funktioniert, ist schnell geschrieben wurden.

Edit: Also Quelltext hab ich kurz getetstet, tut einwandfrei.
Vergiss aber nicht, die Eigenschaft Style deiner ListBox auf lbOwnerDrawVariable zu stellen.
Ansonsten wird die Routine nicht aufgerufen.

Zitat:
Beschreibung

Mit Style können Sie festlegen, ob es sich bei dem Listenfeld um ein Standardlistenfeld handelt, das Strings anzeigt, oder um ein Owner-Draw-Listenfeld, das auch Grafiken anzeigen kann. Owner-Draw-Listenfelder ermöglichen es dem Entwickler, Einträge auf eine Weise anzuzeigen, die nicht dem Standard entspricht. Der entsprechende Quelltext zum Zeichnen von Elementen im Listenfeld muss in diesem Fall vom Anwendungsentwickler bereitgestellt werden.

Style bestimmt, ob das Listenfeld virtuell ist, die Einträge als dynamisch über Ereignisbehandlungsroutinen bereitgestellt werden. Standardmäßig hat Style den Wert lbStandard, was bedeutet, daß das Listenfeld nicht virtuell ist und alle Einträge als Strings angezeigt werden.
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat