Delphi-PRAXiS
Seite 1 von 3  1 23      

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/)
-   -   combobox füllen und auslesen (https://www.delphipraxis.net/124997-combobox-fuellen-und-auslesen.html)

khh 28. Nov 2008 17:22


combobox füllen und auslesen
 
hallo zusammen,
ich bestücke in der proc create eines form eine combobox mit den werten aus einem dyn. array of record.
dh. ich habe im array eine id und eine bezeichnung.( zb: id: 1 ,bezeichnung: kunde,id 2, bezeichnung.Lieferant )

Beim speichern möchte ich die die id des gewählten string aus der box speichern.
Gibts ne einfache möglichkeit die id auszulesen?

danke gruss KH

DeddyH 28. Nov 2008 17:36

Re: combobox füllen und auslesen
 
Du kannst in den Items einer ComboBox auch Objektreferenzen ablegen. Das sind Zeiger, welche wiederum Integers sind. Mit einem einfachen Cast bekommst Du also auch eine Integer hinein.
Delphi-Quellcode:
ComboBox.Items.AddObject('Mustermann',TObject(12));

BullsEye 28. Nov 2008 17:39

Re: combobox füllen und auslesen
 
Hier im Forum suchenINI File

Das könnte ggf helfen ;)

quendolineDD 28. Nov 2008 17:41

Re: combobox füllen und auslesen
 
Oder wenn du bei der Befüllung der ComboBox das Array der Reihe nach durchläufst, kannst du wiederum durch den ItemIndex der ComboBox (ComboBox.ItemIndex) den Wert aus deinem Array lesen.

Hab mal einen kleinen Beispielcode geschrieben:
Deklarierung der Variablen:
Delphi-Quellcode:
type
  TMyRecord = record
    ID : integer;
    Bezeichnung : String;
  end;

  TRecordArr = array of TMyRecord;

[...]
  public
    aArr : TRecordArr;
Zum befüllen:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var i : integer;
begin
setlength(aArr, 2);
aArr[0].ID := 0;
aArr[0].Bezeichnung := 'foo';

aArr[1].ID := 1;
aArr[1].Bezeichnung := 'bar';

for i:= 0 to High(aArr) do
  begin
    ComboBox1.Items.Add(aArr[i].Bezeichnung);
  end;
end;
zum auslesen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
if ComboBox1.ItemIndex <> -1 then
  begin
    ShowMessage(format('Die gwählte ID ist %d und die Bezeichnung ist %s', [aArr[ComboBox1.ItemIndex].ID, ComboBox1.Items.Strings[ComboBox1.ItemIndex]]))
  end;
end;
Jedoch finde ich die Referenzierung durch ein Objekt und das Nutzen der Procedur AddObject auch vernünftiger. Vielleicht kannst du ja auch dein Record durch eine Klasse ersetzen.

khh 28. Nov 2008 17:41

Re: combobox füllen und auslesen
 
Zitat:

Zitat von DeddyH
Du kannst in den Items einer ComboBox auch Objektreferenzen ablegen. Das sind Zeiger, welche wiederum Integers sind. Mit einem einfachen Cast bekommst Du also auch eine Integer hinein.
Delphi-Quellcode:
ComboBox.Items.AddObject('Mustermann',TObject(12));

dann werd ich das mal so probieren

Danke schön, gruss Kh

quendolineDD 28. Nov 2008 18:12

Re: combobox füllen und auslesen
 
Sicher, mal auf dein Problem zugeschnitten
Delphi-Quellcode:
ComboBox.Items.AddObject(RecordArray[i].Bezeichnung, TObject(RecordArray[i].ID));

khh 28. Nov 2008 18:19

Re: combobox füllen und auslesen
 
Zitat:

Zitat von quendolineDD
Sicher, mal auf dein Problem zugeschnitten
Delphi-Quellcode:
ComboBox.Items.AddObject(RecordArray[i].Bezeichnung, TObject(RecordArray[i].ID));


ich danke euch vielmals



Gruss KH

khh 28. Nov 2008 18:32

Re: combobox füllen und auslesen
 
mh steh doch noch aufm schlauch .-(

wie lese ich den integerwert dann aus??



Gruss KH

mkinzler 28. Nov 2008 18:37

Re: combobox füllen und auslesen
 
Wo welchen Wert?

khh 28. Nov 2008 18:37

Re: combobox füllen und auslesen
 
Zitat:

Zitat von mkinzler
Wo welchen Wert?

diesen:

TObject(RecordArray[i].ID));


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 Uhr.
Seite 1 von 3  1 23      

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