AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Delphi- Combobox

Ein Thema von Carter · begonnen am 10. Jul 2009 · letzter Beitrag vom 10. Jul 2009
Antwort Antwort
Seite 1 von 2  1 2   
Carter

Registriert seit: 10. Jul 2009
4 Beiträge
 
#1

Delphi- Combobox

  Alt 10. Jul 2009, 13:18
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]
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.402 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Delphi- Combobox

  Alt 10. Jul 2009, 13:25
Hallo und Willkommen in der 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]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.555 Beiträge
 
#3

Re: Delphi- Combobox

  Alt 10. Jul 2009, 13:36
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.
Sebastian P.R. Gingter
不死鳥 Visit my Blog.
Do not argue with an idiot. They lower you to their level and then try to beat you with experience.
  Mit Zitat antworten Zitat
10. Jul 2009, 13:36
Dieses Thema wurde von "Phoenix" von "Sonstige Fragen zu Delphi" nach "VCL / WinForms / Controls" verschoben.
Falsche Sparte
Carter

Registriert seit: 10. Jul 2009
4 Beiträge
 
#5

Re: Delphi- Combobox

  Alt 10. Jul 2009, 13:48
Zitat von DeddyH:
Hallo und Willkommen in der 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.


  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#6

Re: Delphi- Combobox

  Alt 10. Jul 2009, 13:52
Delphi-Quellcode:
  with ComboBox1 do
  begin
    AddItem('Grünabschnitt (3 Euro)', Ptr(3));
    {...}
  end;


Zugriff zum Beispiel so:

Integer(ComboBox1.Items.Objects[ComboBox1.ItemIndex]);
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.402 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Delphi- Combobox

  Alt 10. Jul 2009, 13:53
Wenn es sich um Gleitkommazahlen handelt, musst Du den von mir beschriebenen Weg gehen (Klasse deklarieren, instanzieren und über AddObject der ComboBox hinzufügen).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#8

Re: Delphi- Combobox

  Alt 10. Jul 2009, 14:01
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ß

Damit sind dann auch Daten und Anzeige getrennt
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.402 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Delphi- Combobox

  Alt 10. Jul 2009, 14:59
Und welchen Mehrwert gegenüber AddObject() soll das bringen?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#10

Re: Delphi- Combobox

  Alt 10. Jul 2009, 15:15
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf