Einzelnen Beitrag anzeigen

Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Listbox zeichen in Zeilen zählen

  Alt 16. Nov 2007, 12:54
Hallo,

probiere das mal:


Delphi-Quellcode:
{ Hier die Einträge machen }
{ Dabei wird die Länge als Integer anstatt eines Objektes angehangen }
procedure TForm1.btnAddItemsClick(Sender: TObject);
var
  Eintrag: string;
begin
  Eintrag:= 'c:\pfad0';
  Listbox1.Items.AddObject(Eintrag, TObject(Length(Eintrag)));
  Eintrag:= 'c:\pfad0\Dies ist ein ganz langer Pfad';
  Listbox1.Items.AddObject(Eintrag, TObject(Length(Eintrag)));
end;

{ Wichtig: Eigenschaft "Style" der Listbox muss auf
  etwas wie "lbOwnerDrawFixed" gestellt, werden damit das
  Ereignis aufgerufen wird.
  Dann einfach die Länge des aktuellen Items auslesen und
  entsprechend rot schreiben, wenn es die max. Länge überschreibt }


procedure TForm1.Listbox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
const
  AbstandLinks = 5;
  MaxLength = 10;
begin
  with Control as TListBox do
  begin
    Canvas.FillRect(Rect);
    If Integer(items.objects[ Index ]) > MaxLength then
      Canvas.Font.Color:= clred else
      Canvas.Font.Color:= clBlack;
    Canvas.TextOut ( Rect.Left + AbstandLinks, Rect.Top, Items[ Index ]);
  end;
end;

Gruß
Pfoto
Jürgen Höfs
  Mit Zitat antworten Zitat