AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Längster Eintrag einer Listbox ermittel?
Thema durchsuchen
Ansicht
Themen-Optionen

Längster Eintrag einer Listbox ermittel?

Ein Thema von thiagojonas · begonnen am 18. Dez 2008 · letzter Beitrag vom 26. Dez 2008
Antwort Antwort
Seite 1 von 3  1 23      
thiagojonas

Registriert seit: 31. Aug 2008
Ort: Wolfenbüttel
338 Beiträge
 
#1

Längster Eintrag einer Listbox ermittel?

  Alt 18. Dez 2008, 21:25
Guten abend

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.
Miniaturansicht angehängter Grafiken
unbenannt-1_161.jpg  
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#2

Re: Längster Eintrag einer Listbox ermittel?

  Alt 18. Dez 2008, 21:35
Du willst den Eintrag mit der größten Länge suchen? Verwende TextWidth()
- das mit dem Hinzufügen habe ich leider nicht verstanden
Ralph
  Mit Zitat antworten Zitat
thiagojonas

Registriert seit: 31. Aug 2008
Ort: Wolfenbüttel
338 Beiträge
 
#3

Re: Längster Eintrag einer Listbox ermittel?

  Alt 18. Dez 2008, 21:40
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
Danke, habe jetzt ein Schreeshot hochgeladen, damit ihr wisst was ich meine
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Längster Eintrag einer Listbox ermittel?

  Alt 18. Dez 2008, 21:41
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
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
blink182

Registriert seit: 19. Jun 2007
126 Beiträge
 
Delphi 5 Standard
 
#5

Re: Längster Eintrag einer Listbox ermittel?

  Alt 18. Dez 2008, 21:42
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*
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#6

Re: Längster Eintrag einer Listbox ermittel?

  Alt 18. Dez 2008, 21:55
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()
Ralph
  Mit Zitat antworten Zitat
thiagojonas

Registriert seit: 31. Aug 2008
Ort: Wolfenbüttel
338 Beiträge
 
#7

Re: Längster Eintrag einer Listbox ermittel?

  Alt 18. Dez 2008, 21:59
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?
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#8

Re: Längster Eintrag einer Listbox ermittel?

  Alt 18. Dez 2008, 22:06
Werden Wort und Unterstriche jeweils in einem Label dargestellt?
Ralph
  Mit Zitat antworten Zitat
thiagojonas

Registriert seit: 31. Aug 2008
Ort: Wolfenbüttel
338 Beiträge
 
#9

Re: Längster Eintrag einer Listbox ermittel?

  Alt 18. Dez 2008, 22:10
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?
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#10

Re: Längster Eintrag einer Listbox ermittel?

  Alt 18. Dez 2008, 22:14
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!
Ralph
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:47 Uhr.
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