Delphi-PRAXiS
Seite 1 von 2  1 2   

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 Delphi- Combobox (https://www.delphipraxis.net/136928-delphi-combobox.html)

Carter 10. Jul 2009 13:18


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]

DeddyH 10. Jul 2009 13:25

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:
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;
[edit] Add: Du musst natürlich daran denken, diese Objekte auch später wieder freizugeben. [/edit]

Phoenix 10. Jul 2009 13:36

Re: Delphi- Combobox
 
Zitat:

Zitat von Carter
eine Frage bzgl. Delphi7

Warum hakst Du dann oben im Thread Delphi für .NET / Delphi Prism an?
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 10. Jul 2009 13:36

DP-Maintenance
 
Dieses Thema wurde von "Phoenix" von "Sonstige Fragen zu Delphi" nach "VCL / WinForms / Controls" verschoben.
Falsche Sparte

Carter 10. Jul 2009 13:48

Re: Delphi- Combobox
 
Zitat:

Zitat von DeddyH
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:
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;
[edit] Add: Du musst natürlich daran denken, diese Objekte auch später wieder freizugeben. [/edit]


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.


:(

Sprint 10. Jul 2009 13:52

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]);

DeddyH 10. Jul 2009 13:53

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).

jfheins 10. Jul 2009 14:01

Re: Delphi- Combobox
 
Ich hab da ne Idee:
Delphi-Quellcode:
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));
Als kleiner Denkanstoß :stupid:

Damit sind dann auch Daten und Anzeige getrennt ;)

DeddyH 10. Jul 2009 14:59

Re: Delphi- Combobox
 
Und welchen Mehrwert gegenüber AddObject() soll das bringen?

jfheins 10. Jul 2009 15:15

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 13:46 Uhr.
Seite 1 von 2  1 2   

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