AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Combobox lookup refresh Items

Ein Thema von jheinz · begonnen am 16. Jan 2014 · letzter Beitrag vom 17. Jan 2022
Antwort Antwort
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.757 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Combobox lookup refresh Items

  Alt 16. Jan 2022, 18:03
.. sieht doch eigentlich ok aus.

Delphi 11 - Windows 10 21H2

Bei zweimaligem betätigen des Buttons steht dort 1123

a) Item[1] 11
b) item{1] 112 - 11 plus Länge von '11'
c) Item[1] 1123 112 plus Länge von '112'

Grüße
Klaus
Angehängte Grafiken
Dateityp: png comboBoxTest.pNG (4,6 KB, 8x aufgerufen)
Klaus

Geändert von Klaus01 (16. Jan 2022 um 18:10 Uhr)
  Mit Zitat antworten Zitat
DenkDirNix

Registriert seit: 13. Dez 2018
66 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Combobox lookup refresh Items

  Alt 16. Jan 2022, 18:50
Ja, aber wenn Du mal die ComboBox aufklappst bei den Versuchen a bis c, dann steht dort etwas anderes (siehe Screenshot aus Beitrag #8).
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.757 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Combobox lookup refresh Items

  Alt 16. Jan 2022, 18:59
ja, stimmt.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ComboBox1.Items[1] := ComboBox1.Items[1] + length( ComboBox1.Items[1] ).ToString;
  Label2.Text := ComboBox1.Items[1];
  ComboBox1.ItemIndex := 1;
  comboBox1.Repaint;
end;
So sollte es funktioneren.
Nein - auch noch nicht so richtig

Grüße
Klaus
Klaus

Geändert von Klaus01 (16. Jan 2022 um 19:04 Uhr)
  Mit Zitat antworten Zitat
DenkDirNix

Registriert seit: 13. Dez 2018
66 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Combobox lookup refresh Items

  Alt 17. Jan 2022, 10: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.
Angehängte Grafiken
Dateityp: jpg Test.jpg (5,9 KB, 1x aufgerufen)

Geändert von DenkDirNix (17. Jan 2022 um 14:35 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:27 Uhr.
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