Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Teilbereich von Enum in Combobox und zurück (https://www.delphipraxis.net/185010-teilbereich-von-enum-combobox-und-zurueck.html)

Dalai 7. Mai 2015 12:08

Teilbereich von Enum in Combobox und zurück
 
Ein Hallo in die Runde.

Gegeben sei ein Enum
Delphi-Quellcode:
type
  TStartupLocation = (slRegRunCommon32,
                      slRegRunCommon64,
                      slRegRunOnceCommon32,
                      slRegRunOnceCommon64,
                      slRegRunUser,
                      slRegRunOnceUser,
                      slSMCommon,
                      slSMUser
                      );
Dieses soll in eine Combobox übertragen werden (kein Problem), aber auf einem 32 Bit System müssen die beiden auf "64" endenen Einträge ausgelassen werden (auch noch kein Problem). Nun aber wird's kompliziert, und da hänge ich im Moment. Der Nutzer soll einen Eintrag aus der Combobox auswählen können, d.h. ich brauche einen Weg, um von der Combobox wieder zurück zum Enum zu kommen, und zwar unter Berücksichtigung der Auslassung einzelner Einträge. Ohne Auslassung wäre das ja kein Ding, es gibt ja ItemIndex, der dem Ordinaltyp des Enums entspricht. Aber was mache ich mit der Auslassung?

Bisher hab ich nur die Idee, die beiden 64er ans Ende des Enums zu schieben, damit das "Mapping" mit dem ItemIndex funktioniert. Gibt's da andere Möglichkeiten?

Über die Strings zu geben, wird übrigens ebenfalls schwierig, weil selbige vor dem Eintragen in die Combobox übersetzt werden (je nach ausgewählter Sprache).

MfG Dalai

mkinzler 7. Mai 2015 12:16

AW: Teilbereich von Enum in Combobox und zurück
 
Lege doch den urspünglichen Wert in Objects ab.

Dalai 8. Mai 2015 22:52

AW: Teilbereich von Enum in Combobox und zurück
 
Mmh, das funktioniert in der Tat. Allerdings ist der Aufwand größer als ich dachte, denn man muss eine Klasse deklarieren, das Objekt erzeugen, in die Items aufnehmen und hinterher auch wieder abräumen. Zudem muss man die Items durchlaufen, um einen Eintrag der Combobox programmatisch auszuwählen. Daher hab ich mich entschieden, sie doch ans Ende zu schieben. So spare ich mir die Arbeit und kann ItemIndex benutzen.

Danke dennoch für die Anregung!

MfG Dalai

himitsu 9. Mai 2015 06:29

AW: Teilbereich von Enum in Combobox und zurück
 
Man kann auch böstillig billig den Typen nach TObject/Pointer casten. :angle:

Es wird nirgendwo geprüft, ob es ein echtes Objekt ist.
In Delphi ist es als TObjekt deklariert, der WinAPI ist der Typ egal.
https://msdn.microsoft.com/de-de/lib.../bb775909.aspx

mkinzler 9. Mai 2015 08:43

AW: Teilbereich von Enum in Combobox und zurück
 
Diese Lösung würde ich als praktisch und nicht als billig ansehen.


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