Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Längster Eintrag einer Listbox ermittel? (https://www.delphipraxis.net/126143-laengster-eintrag-einer-listbox-ermittel.html)

thiagojonas 18. Dez 2008 21:25


Längster Eintrag einer Listbox ermittel?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Guten abend :-D

Wie kann ich denn den längsten Eintrag einer Listbox anzeigen lassen? Z.B. im TLabel.

Mein Ansatz:

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var i:integer;
var target:string;
begin
Label1.Caption := EmptyStr;
for i := 0 to form2.listbox1.Items.Count -1 do
begin
target := Label1.Caption + listbox1.items.Strings[i] + sLineBreak;
Label1.Caption := target;
  end;
end;
Jetzt habe ich alle einezel in ein TLabel untereinander angezeigt bekommen.

Ich möchte nänmlich dem längsten Eintrag folgendes hinzufügen: "____________________________"
Weil die namen unterschiedlich lang sind will ich daduchr versuchen die Unterstriche genau untereinander zu kriegen.
So das es ungefähr so aussieht:



Danke im voraus.

taaktaak 18. Dez 2008 21:35

Re: Längster Eintrag einer Listbox ermittel?
 
Du willst den Eintrag mit der größten Länge suchen? Verwende TextWidth()
- das mit dem Hinzufügen habe ich leider nicht verstanden :roteyes:

thiagojonas 18. Dez 2008 21:40

Re: Längster Eintrag einer Listbox ermittel?
 
Zitat:

Zitat von taaktaak
Du willst den Eintrag mit der größten Länge suchen? Verwende TextWidth()
- das mit dem Hinzufügen habe ich leider nicht verstanden :roteyes:

Danke, habe jetzt ein Schreeshot hochgeladen, damit ihr wisst was ich meine :oops: :-D

lbccaleb 18. Dez 2008 21:41

Re: Längster Eintrag einer Listbox ermittel?
 
Gehe alle Einträge der ListBox mit einer schleife durch, und lese den jeweiligen eintrag aus, dann suchst du mit hilfe von Length() den längsten String raus, und dann hast du Ihn ;-)

blink182 18. Dez 2008 21:42

Re: Längster Eintrag einer Listbox ermittel?
 
Zitat:

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var i:integer;
var target:string;
begin
Label1.Caption := EmptyStr;
for i := 0 to form2.listbox1.Items.Count -1 do
begin
target := Label1.Caption + listbox1.items.Strings[i] + sLineBreak;
Label1.Caption := target;
  end;
end;

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var i:integer;
var target:string;
s:string, laenge:integer;
begin
Label1.Caption := EmptyStr;
laenge:=0;
for i := 0 to form2.listbox1.Items.Count -1 do
begin
s:=Form2.Listbox1.items[i];
if length(s)>laenge then
begin
laenge:=length(s)
target:=s;
end;
end;
Label1.caption:=target;
end;
also so würd ich das jetzt machen, denk mal das klappt *ungetestet*

taaktaak 18. Dez 2008 21:55

Re: Längster Eintrag einer Listbox ermittel?
 
Vermutlich wird das in den meisten Fällen so funktionieren, aber die Vorgehensweise die Zahl der Zeichen zu vergleichen ist bei Zeichensätzen mit variabler Buchstabenbreite nicht unbedingt korrekt und zielführend! Deshalb mein Hinweis auf TextWidth() :warn:

thiagojonas 18. Dez 2008 21:59

Re: Längster Eintrag einer Listbox ermittel?
 
Super klappt, Danke!

So wenn ich jetzt den längsten Wert habe, dann füge ich noch den Unterschtrich ein: ":_____________________".

Und wie kann ich bei der anderen Werten das so hinkriegen, dass deren Unterstriche genau unter dem des längsten Wertes ist?

taaktaak 18. Dez 2008 22:06

Re: Längster Eintrag einer Listbox ermittel?
 
Werden Wort und Unterstriche jeweils in einem Label dargestellt?

thiagojonas 18. Dez 2008 22:10

Re: Längster Eintrag einer Listbox ermittel?
 
ja so soll es eigentlich sein. Siehe abbildung oben.
In meinem code werden die werte der listbox untereinader in EINEM Label dargestellt.
Dort füge ich eigentlich auch schon den Unterstrich jeweils ein.
So dass jeer wert im label mit dem unterstrich angezeigt wird.
Das problem ist halt, dass sie unterstricht nicht untereinander sind, weil die einzelnen werte unterschiedlich lang sind.
Ich denke mann müsste die beiden Codes zusammenfügen. Aber was dann?

taaktaak 18. Dez 2008 22:14

Re: Längster Eintrag einer Listbox ermittel?
 
Nun, warum trennst du nicht die Worte und die Unterstriche? Dann kannst du die Label mit den Unterstrichen zur Laufzeit an die richtige Position verschieben! Sonst müsstest du ja den Zwischenraum mit Leerzeichen auffüllen - und das wird bei Zeichensätzen mit variabler Zeichenbreite nicht immer passen.

// edit: Noch besser wäre, für die Anzeige kein Label zu verwenden. Nutze ein Stringgrid. Fixedcols und fixedrows=0, BorderStyle=bsNone, GridlineWidth=0, Color wie gewünscht. In die (unsichtbaren) Zellen schreibst du deine Worte und Unterstriche - fertig!


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:20 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz