![]() |
Delphi- Combobox
Hi Leute,
ich bin neu hier und hab auch gleich mal eine Frage bzgl. Delphi7. Ich möchte für mich ein Programm erstellen, wo ich aus einer Combobox Dinge auswählen, diese Dinge dann für eine ganz bestimmte Zahl stehen, mit der ich dann weiter rechnen kann... Mh... weiß nicht recht, ob ihr das jetzt verstanden habt, was ich möchte... Meine Frage ist einfach, wie sag ich dem Programm, dass es nur mit den Zahlen in der Combobox rechnen soll und ebend nicht mit den Wörtern bzw. Buchstaben die auch noch zwecks Übersichtlichkeit drin stehen?!? Oder muss ich da sogar ein anderes Werkzeug anstatt dieser Combobox nehmen? mfg Hoffe auf Hilfe... [edit=Phoenix]Angabe zur Sprache von .NET auf Win32 geändert. Mfg, Phoenix[/edit] |
Re: Delphi- Combobox
Hallo und Willkommen in der DP :dp:,
geht es hier wirklich um .NET? Falls nicht: Du kannst in den Items der ComboBox auch Objekte hinterlegen. Da diese ja eigentlich nur Zeiger und diese wiederum nur Zahlen sind, kannst Du diese Zahlen (als gefakte Objekte dann) in diesen Items hinterlegen. Oder Du bildest wirklich Objekte, dann ist das einfacher zu verstehen. Ein Beispiel für Letzteres (aus dem Kopf, daher ohne Gewähr):
Delphi-Quellcode:
[edit] Add: Du musst natürlich daran denken, diese Objekte auch später wieder freizugeben. [/edit]
type
TMyClass = class private FBezeichnung: string; FZahl: integer; public property Bezeichnung: string read FBezeichnung write FBezeichnung; property Zahl: integer read FZahl write FZahl; end; ... procedure TMainForm.ButtonAddClick(Sender: TObject); var MyClass: TMyClass; begin MyClass := TMyClass.Create; MyClass.Bezeichnung := 'Wuppdi'; MyClass.Zahl := 42; DieComboBox.Items.AddObject(MyClass.Bezeichnung, MyClass); end; |
Re: Delphi- Combobox
Zitat:
Delphi 7 ist ganz althergebrachte Win/32 Entwicklung. Ich ändere das mal, aber achte in Zukunft bitte darauf, wie Du Deine Threads markierst. Zudem gehört eine Frage zu einer Komponente der VCL (in dem Fall zur Combobox) auch in die VCL-Sparte. Auch hier bitte in Zukunft auf die richtige Zuordnung achten. |
DP-Maintenance
Dieses Thema wurde von "Phoenix" von "Sonstige Fragen zu Delphi" nach "VCL / WinForms / Controls" verschoben.
Falsche Sparte |
Re: Delphi- Combobox
Zitat:
Ich musste eine Sprache angeben... kp was das für eine Sprache ist... Wird einfach nur mit dem Programm Delphi7 geschrieben. Wie hinterlege ich Objekte in den Items? Ich möcht es nochmal etwas anders ausdrücken: Die Combobox soll in etwa so funktionieren: Ich wähle aus verschiedenen Sachen eines aus, z.b. Grünschnitt-Abfall der was weiß ich 3euro kostet... Nun steht in der Combobox Grünschnitt und dahinter 3euro. Mit den 3euro soll gerechnet werden... Bei mir kommt immer die Fehlermeldung: Im Projekt ... ist eine Exception der Klasse EConvertError aufgetreten. Meldung:"Bauschutt- Boden- Gemsich 9,50" ist keine gültige Gleitkommazahl. Prozess wurde angehalten. :( |
Re: Delphi- Combobox
Delphi-Quellcode:
with ComboBox1 do
begin AddItem('Grünabschnitt (3 Euro)', Ptr(3)); {...} end; Zugriff zum Beispiel so:
Delphi-Quellcode:
Integer(ComboBox1.Items.Objects[ComboBox1.ItemIndex]);
|
Re: Delphi- Combobox
Wenn es sich um Gleitkommazahlen handelt, musst Du den von mir beschriebenen Weg gehen (Klasse deklarieren, instanzieren und über AddObject der ComboBox hinzufügen).
|
Re: Delphi- Combobox
Ich hab da ne Idee:
Delphi-Quellcode:
Als kleiner Denkanstoß :stupid:
type
TItem = class private FBezeichnung: string; FPreis: Single; public function ToString(): string; constructor Create(aBezeichnung: String; aPreis: Single) property Bezeichnung: string read FBezeichnung write FBezeichnung; property Preis: Single read FPreis write FPreis; end; var items: Array of TItem; // evtl. ins Form // Im OnCreate oder so folgendes: setlength(items, 2); items[0] := TItem.Create('Grünschnitt', 3); items[1] := TItem.Create('Keks', 0.50); for i := 0 to High(items) do ComboBox1.Items.Add(items[i].ToString()) //--------------------- // Zugreifen kannste dann ungefähr so: if ComboBox.ItemIndex > -1 then showmessage(inttostr(items[ComboBox1.ItemIndex].Preis)); Damit sind dann auch Daten und Anzeige getrennt ;) |
Re: Delphi- Combobox
Und welchen Mehrwert gegenüber AddObject() soll das bringen?
|
Re: Delphi- Combobox
Hmmm ...
Wenn man z.B. statt ner Combobox ne Listview verwenden möchte, weil man festgestellt hat, dass die Leute lieber alle Möglichkeiten sehen wollen oder weil man die Preise untereinander stehen haben will - dann braucht man so nur die eine Stelle ändern, in der das Array in die Combobox eingefügt wird. Aber ja, die Lösungen sind quasi equivalent :stupid: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz