![]() |
Listbox zeichen in Zeilen zählen
Hi Leute,
folgendes Problem. Ich habe eine Listbox, in dieser werden Pfade von dateien aufgeführt. z.b. so ( DAS FUNKTIONIERT :-) ) c:\pfad0 c:\pfad2\unterpfad1 c:\pfad3\unterpfad1\unterpfad2 jetzt müsste ich hinter jede Zeile die Anzahl an zeichen schreiben z.b. so ( DAS BEKOMM ICH NICHT HIN :-( ) c:\pfad0 8 c:\pfad2\unterpfad1 19 c:\pfad3\unterpfad1\unterpfad2 30 und wenn diese Zahl einen wert x übersteigt soll die zeile rot werden. Kann mir jemand eine Hilfestellung geben wie ich die sache angehen kann. Ich bin für jeden Vorschlag sehr dankbar. mfg bofh |
Re: Listbox zeichen in Zeilen zählen
Mal ohne die Farbe:
Delphi-Quellcode:
ListBox1.Items.Add(Format('%s %d',[Pfad, Length(Pfad)]));
|
Re: Listbox zeichen in Zeilen zählen
Das Speichern von Metadaten in den Daten ist nicht gerade so schön ... Also entweder die Daten in TListBox.Items.Objects rein packen, gar nicht merken oder eine TListView nehmen. Zur Farbe: ![]() |
Re: Listbox zeichen in Zeilen zählen
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 |
Re: Listbox zeichen in Zeilen zählen
Vielen Dank,
ich habe die Lösung durch euro Ansätze geschafft. :cheers: bofh |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz