Autor Beitrag
lilalaunebaer
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 01.08.03 10:39 
Hallo Folks !

Ich hab nen nettes Problemchen:

Ich habe ein fertiges Programm übernommen, in der
ein Typ wie folgt deklariert ist.

ausblenden Quelltext
1:
TMyType = (mtBla, mtBlub, mtJaja);					

, also als Ordinaltyp. Die Liste aber ist 200 Bezeichner lang, und die
Bezeichner habe schon sinnvolle Namen (mgAccordeon,mgBassdrum usw).

Jetzt möchte ich gerne die Liste der Bezeichner in einer ComboBox dargestellt haben; habe ich auch soweit fertig (per Hand eingefügt), nur wenn ich eine auswähle, kann ich ja den CB.Text nicht als Ordinalbezeichner nehmen.
(AN DIESER STELLE: JA, ich weiß ich könnte den Itemindex nehmen, aber falls ich etwas einfüge will ich das nicht Zwingend am Ende des Sets machen (Reihenfolge), es muss Variablel bleiben. ItemIndex ist mir zu einfach und statisch, und ein fest definiertes Set will ich nicht benutzen)

:?: Gibt es eine Funktion, die es mir ermöglicht einen String als Ordinalbezeichner zu verwenden ? :?:
Codemäßig stelle ich mir das so vor:
ausblenden Quelltext
1:
2:
3:
 v := StrToOrd(CB.Items[CB.Itemindex]]);
// Soll entsprechen einer Zuweisung wie:
v := mgAccordeon; // wenn der CB.Text = mgAccordeon ist.


Sollte klar sein,
ansonsten bohrt nach ! :wink:

Danke,
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Fr 01.08.03 11:13 
Hallo,

das einzige was mir da momentan einfällt, ist dass du die Postition des Wertes im Aufzählungstyp als Object an den Jeweiligen Listeneintrag hängst. Also so:
ausblenden Delphi-Quelltext
1:
ComboBox1.Items.AddObject('BlaBla', Ptr(Ord(mtBla)));					

Wieder auslesen geht dann entsprechend:
ausblenden Delphi-Quelltext
1:
Result := TMyType(LongInt(ComboBox1.Items.Objects[ComboBox1.ItemIndex]);					

Wobei ich mir ncith sicher bin, ob der Weg über Longint wirklich nötig ist. Vieleicht kann man auch direckt auf tMyType Casten.

Gruß
Klabautermann