Delphi-PRAXiS

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 TComboBoxEx.ItemIndex (https://www.delphipraxis.net/213194-tcomboboxex-itemindex.html)

PeterPanino 13. Jun 2023 06:42

TComboBoxEx.ItemIndex
 
TComboBoxEx ist so etwas wie ein erweitertes TComboBox Steuerelement und ermöglicht die Verwendung von Item Images. Seine Eigenschaft ItemIndex ist public (nicht published!) und gibt Auskunft darüber, welches Item gerade ausgewählt ist (ItemIndex: Integer).

So weit so gut. Leider funktioniert das nicht in der umgekehrten Richtung: Das heißt,
Delphi-Quellcode:
ComboBoxEx1.ItemIndex := 3
bewirkt NICHT die Auswahl des 4. Elements der Liste, sondern gar nichts.

Wie kann man also über einen Integer-Wert die Auswahl eines Items von TComboBoxEx steuern?

itsChris 13. Jun 2023 08:01

AW: TComboBoxEx.ItemIndex
 
Also bei mir funktioniert das Setzen des ItemIndex problemlos und bewirkt auch eine Änderung. :gruebel:

Wenn aber der Index außerhalb des Bereichs ist, dann wird der vorher gesetzte/ausgewählte Index beibehalten.

PeterPanino 13. Jun 2023 08:17

AW: TComboBoxEx.ItemIndex
 
Du hast recht. Das Setzen von ItemIndex funktioniert. Mir ist ein Fehler unterlaufen.

anse 13. Jan 2025 07:36

AW: TComboBoxEx.ItemIndex
 
Passt nicht direkt zum Thema, aber verwandt: das Auslesen von TComboBoxEx.ItemIndex dauert ca. 3x so lang wie dasselbe bei der guten alten TComboBox.

Das hat bei mir in einer sehr langen Schleife ein Performance-Problem ausgelöst, was ich dann durch eine lokale Variable gelöst habe.

Delphi-Quellcode:
idx := comboEx.ItemIndex;
for i:=0 to 1000000 do begin
  // case comboEx.ItemIndex of // slow!
  //   0: ...
  //   1: ...
  // end;
end;

Redeemer 13. Jan 2025 11:06

AW: TComboBoxEx.ItemIndex
 
Dann mach ich auch noch eine Anmerkung: Das Löschen des ausgewählten Eintrags aus der TComboBoxEx zeichnet sie ab Windows 10 bei csExDropDownList nicht neu. Das schließt das Leeren der Einträge ein. Da danach trotzdem der ItemIndex auf -1 steht, funktioniert auch das Setzen nicht, da Delphi denkt, es wäre bereits nichts ausgewählt. Daher immer den ItemIndex auf -1 setzen, bevor man das ausgewählte Element löscht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:14 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