![]() |
TComboBox mit eigenem ItemIndex
Hallo,
manchmal hat man ja Werte in einer TComboBox, wozu man gerne auch den entsprechenden ItemIndex als Pendant hätte, z. B.
Delphi-Quellcode:
"Leider" jedoch geht das (zumindest bei der Standardkomponente) in der gezeigten Weise ja nicht, da der ItemIndex (bedingt aus Items) fortlaufend durchnummeriert wird. Ok, via einer case-Anweisung kann man das Problem rel. leicht lösen, doch wenn die Liste etwas länger ist und/oder neue Werte dazu kommen, wird es schon umständlich(er).
ItemIndex Value
2 2 5 5 8 8 9 9 Gibt es ggf. eine Alternativkomponente, die (bspw. mit einer Hashtable) das so wie oben gewünscht macht? Gruß, Carsten |
Re: TComboBox mit eigenem ItemIndex
Ich habe nicht so ganz dein problem verstanden, aber suchst du eventuell [oh]AddObject[oh]? Damit kannst du zusätzlich Informationen zu den Items hinterlegen -- zusätzlich zu dem angezeigtem Text.
|
Re: TComboBox mit eigenem ItemIndex
Hallo,
keine Lösung, nur ein Denkanstoß: Mache die 'nen Nachfahren von TComboBox, dem Du eine zweite Stringliste spendierst. In die vorhandene schreibst Du die Werte, die angezeigt werden sollen, in die zweite den von Dir gewünschten Index. Wenn Du nun über IndexOf in dieser zweiten Liste Deinen Wert suchst, kannst Du ihn mit dem Ergebnis von IndexOf in der ersten Stringliste abfragen. Beispiel:
Delphi-Quellcode:
Label1.Caption := ComboBox.Items[ComboBox.myItems.IndexOf(8)];
Code:
Mit diesen Werten sollte Label1.Caption dann Blumenkohl sein.
ItemIndex Value
2 Auto 5 Tante 8 Blumenkohl 9 Dromedar |
Re: TComboBox mit eigenem ItemIndex
Zitat:
Delphi-Quellcode:
Von mir gewünscht:
ItemIndex Value
0 2 1 5 2 8 3 9
Delphi-Quellcode:
Gesucht:
ItemIndex Value
2 2 5 5 8 8 9 9 Fertige Komponente (selbst entwickeln kann ja jeder :drunken:) Gruß, Carsten |
Re: TComboBox mit eigenem ItemIndex
Zitat:
Gruß, Carsten |
Re: TComboBox mit eigenem ItemIndex
Ob er nun die Werte in einer zusätzlichen Liste speichert, die er erst implementieren müsste oder ob er dazu die vorhandene AddObject Methode nutzt dürfte keinen Unterschied machen, bis auf die Tatsache, dass das eine schon implemntiert ist und das andere nicht.
|
Re: TComboBox mit eigenem ItemIndex
Hier mal ein Beispiel für AddObject:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin ComboBox1.Items.Clear; Combobox1.Items.AddObject('Z', pointer(0)); Combobox1.Items.AddObject('B', pointer(1)); Combobox1.Items.AddObject('A', pointer(2)); ComboBox1.Sorted := True; ComboBox1.Text := ComboBox1.Items[0]; end; procedure TForm1.ComboBox1Change(Sender: TObject); var o: integer; begin with TComboBox(Sender) do begin if ItemIndex > -1 then o := Integer(Items.Objects[ItemIndex]) else o := -1; Label2.Caption := Format('Itemindex : %d Object: %d', [ItemIndex, o]); // A = 0, 2 // B = 1, 1 // Z = 2, 0 end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:12 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