Registriert seit: 13. Dez 2018
69 Beiträge
Delphi 11 Alexandria
|
AW: Combobox lookup refresh Items
17. Jan 2022, 11:15
Ich habe das Ganze jetzt mal in den FMX-Sourcen verfolgt:
Jede TComboBox hat ein Flag für den Zustand "ItemsChanged". Dieses Flag wird beim Aufklappen der DropDownListe abgefragt (TCustomComboBox.DropDown -> TCustomComboBox.InitPicker -> TComboBoxHelper.AreItemsChanged) und bei false wird die anzuzeigende Liste nicht aus den ComboBox-Items sondern aus einer Art Cache geholt.
Dieses Flag wird aber beim Ändern eines einzelnen ComboBox-Items per Zuweisung nicht gesetzt. So entsteht die inkonsistente Anzeige beim Aufklappen der DropDown-Liste, siehe Screenshot.
Die Merkwürdigkeit, dass dieser Fehler idR erst ab der zweiten Zuweisung (zweiter Click auf den Test-Button) auftritt liegt daran, dass von der Initialisierung (Übernahme der Items aus dem FMX-Formular) her das Flag noch auf true steht. Erst mit dem ersten (und jedem weiteren) Aufklappen der DropDownListe wird es auf false gesetzt (TComboBoxHelper.SetItemsChanged).
Falls man in meinem Testprogramm vor dem ersten Button-Click schon mal die DropDown-Liste aufgemacht hat tritt der Fehler dann auch schon beim ersten Click auf.
Geändert von DenkDirNix (17. Jan 2022 um 15:35 Uhr)
|