Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Erzeugen von Namens-Wertepaaren in Listbox (https://www.delphipraxis.net/38000-erzeugen-von-namens-wertepaaren-listbox.html)

Christian123 13. Jan 2005 13:52


Erzeugen von Namens-Wertepaaren in Listbox
 
Hallo!
Ich habe ein kleines aber feines Problem, bei dem die Hilfe in Delphi 7 leider nicht weiterhilft.
Folgendes soll realisiert werden:
Beispiel:

Sichtbarer Eintrag in der Liste z. B. "Meier"
Daraus ergibt sich für den Ersten Eintrag der Index 0.
Jetzt möchte ich aber für den 1. Eintrag eine Value Eigenschaft hinterlegen, so dass nach Klick auf die Listbox z.B. der Beruf aus der Value Eigenschaft ausgelesen wird, z.B. "Programmierer".

Das Eintragen von Werten in eine Listbox ist nicht das Problem, sondern die Frage, wie ich den "maskierten" Wert "Programmierer" wieder auslesen kann. Wie erzeuge ich also das Wertepaar "Meier / Programmierer" und lese es über die Eigenschaften wieder aus(wahrscheinlich irgendwie mit TStrings).
Die Methoden wie Klick auf Listbox und evtl. Messageboxen für die Ausgabe von Daten sind hier nicht(!!) von Interesse, sondern wirklich, wahrscheinlich die 2-3 Zeilen, wie man für diese Fragestellung vorghehen muss.

NameValueSeparator war ein Hinweis in der Hilfe, der mich aber auch nicht weiter brachte.
Vielen Dank für die Hilfe!!!!!!

BluesKid 13. Jan 2005 14:21

Re: Erzeugen von Namens-Wertepaaren in Listbox
 
Moin moin

Mal angenommen, dass du die Werte in die Listbox selber einfügst:

Erstelle dir eine Variable vom Typ TStringList.

Delphi-Quellcode:
...
var verborgenenText : TStringList;
.
.
  verborgenenerText := TStringList.create;
Beim Hinzufügen von Einträgen in die Listbox, (z.B. Meier) fügst du dann einfach den "verborgenen Text" (in diesem Fall dann wohl "Programmierer") an deine StringList an.

Somit haben dann alle Einträge in der Listbox, den selben Index wie die Einträge in der StringList.

Sprich über:

Delphi-Quellcode:
  verborgenerText.items[listbox1.itemindex]
erhälst du den "verborgenen text" zu dem Eintrag der Listbox.



schönen Gruß
Sam

[edit] Herzlich Willkommen in der Delphi-Praxis [/edit]

Christian123 13. Jan 2005 14:36

Re: Erzeugen von Namens-Wertepaaren in Listbox
 
Danke für die Antwort.

Aber was ich möchte ist, dass ich die Listbox auf Sorted stelle um mir eine Sortierung der Einträge von Hand zu sparen.
Deine Lösung ist einfach wie einleuchtend, aber dann würden die Indizes nicht mehr übereinstimmen.
Deswegen schwebt mir irgendwas wie:

Listbox.Items[listbox.itemindex].Value := "Programmierer";
Listbox.Items[listbox1.itemindex] ="Meier";

vor.

Dieser Code ist natürlich falsch, soll aber in etwa andeuten,wohin die Reise gehen soll..;)

BluesKid 13. Jan 2005 14:54

Re: Erzeugen von Namens-Wertepaaren in Listbox
 
ahso

Wenn du in der Variable "verborgenerText" (s.o.) den Text in der Form

"Meier=Programmierer" anfügst, (ohne Gänsefüsschen) kannst du über

Delphi-Quellcode:
  verborgenerText.items.values['Meier']
an den Text "Programmierer" kommen.


Also so in der Form:

Delphi-Quellcode:
  verborgenerText.items.values[listbox1.items[listbox1.itemindex]]


nich getestet :gruebel:



schönen Gruß
Sam

Nachtrag:

Das funktioniert dann aber imho nur noch für eindeutige Werte in der Listbox. Alternativ kannst du dann ja auch die StrinList sortieren lassen und wie oben beschrieben mithilfe des itemindex sowie Delphi-Referenz durchsuchencopy() und Delphi-Referenz durchsuchenpos() "von Hand" and den Text hinter dem "=" kommen.

Sharky 13. Jan 2005 18:38

Re: Erzeugen von Namens-Wertepaaren in Listbox
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hai Christian123,

das würde ich mit einem Object lösen. Das ist die sauberste Methode. Im Anhang mal ein Demo.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:22 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