![]() |
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 |
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));
|
Re: combobox füllen und auslesen
|
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:
Zum befüllen:
type
TMyRecord = record ID : integer; Bezeichnung : String; end; TRecordArr = array of TMyRecord; [...] public aArr : TRecordArr;
Delphi-Quellcode:
zum auslesen:
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;
Delphi-Quellcode:
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.
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; |
Re: combobox füllen und auslesen
Zitat:
Danke schön, gruss Kh |
Re: combobox füllen und auslesen
Sicher, mal auf dein Problem zugeschnitten
Delphi-Quellcode:
ComboBox.Items.AddObject(RecordArray[i].Bezeichnung, TObject(RecordArray[i].ID));
|
Re: combobox füllen und auslesen
Zitat:
ich danke euch vielmals Gruss KH |
Re: combobox füllen und auslesen
mh steh doch noch aufm schlauch .-(
wie lese ich den integerwert dann aus?? Gruss KH |
Re: combobox füllen und auslesen
Wo welchen Wert?
|
Re: combobox füllen und auslesen
Zitat:
TObject(RecordArray[i].ID)); |
Re: combobox füllen und auslesen
Zitat:
ComboBox.Items.Objects[index]; |
Re: combobox füllen und auslesen
Zitat:
|
Re: combobox füllen und auslesen
Delphi-Quellcode:
TDeinObject(ComboBox.Items.Objects[index]).ID
|
Re: combobox füllen und auslesen
also irgendwie ist es heute schon spät :-(
ich hab die box mit: ComboBox.Items.AddObject(RecordArray[i].Bezeichnung, TObject(RecordArray[i].ID)); gefüllt. wie krieg ich den ausgewählten wert jetzt in ein integerfeld? Danke gruss Kh |
Re: combobox füllen und auslesen
Delphi-Quellcode:
<Integerfeld> := TDeinObject(ComboBox.Items.Objects[index]).ID;
|
Re: combobox füllen und auslesen
Sry, da war ich eben völlig neben der Spur.
Delphi-Quellcode:
Ein "Rückcasten" sollte genügen.
integer(ComboBox.Items.Objects[index]);
|
Re: combobox füllen und auslesen
Nicht ganz, da in meinem Beispiel als Object die Referenz auf die ID gesetzt wird.
Somit musst du das Ergebnis als Integer casten.
Delphi-Quellcode:
ShowMessage(format('Die Bezeichnung ist: %s und die ID ist %d',[ComboBox1.Items.Strings[ComboBox1.ItemIndex], Integer (ComboBox1.Items.Objects[ComboBox1.ItemIndex])]));
|
Re: combobox füllen und auslesen
Zitat:
mh, und was steht in index? ichbrauche doch nur den einen ausgewählten wert:-( Gruss Kh |
Re: combobox füllen und auslesen
Delphi-Quellcode:
ItemIndex repräsentiert den Index des ausgewählten Eintrags. Die Indexierung beginnt wie üblich bei 0. Der Index ist -1, falls nichts ausgewählt wurde.
< Integerfeld > := Integer (ComboBox.Items.Objects[ComboBox.ItemIndex]);
|
Re: combobox füllen und auslesen
Deltef hat seinen Beitrag verbessert. Ich dachte du hättest eine Struktur abgelegt und nicht nur einen Integer-Wert
|
Re: combobox füllen und auslesen
Zitat:
EDIT: habs doch noch probiert. danke das klappt ;-) supi!!! danke euch gruss Kh |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:28 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