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
Seite 1 von 2  1 2      
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Combobox lookup refresh Items

  Alt 11. Mär 2019, 12:58
Hallo,
hier steht was von DataSource.Active=False und wieder True setzen,
also nicht die Query.

https://delphiaball.co.uk/2015/10/21...ings-via-code/

Oder deaktivierst das LiveBinding im Code und setzt die Query danach wieder drauf.


Ich erkläre es etwas umständlich, weil ich LiveBindings nicht benutze.
Heiko

Geändert von hoika (11. Mär 2019 um 13:01 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#2

AW: Combobox lookup refresh Items

  Alt 3. Apr 2019, 16:44
Soo, ich konnte das nun endlich mal testen. Leider ohne Erfolg.

Die dort beschriebenen Properties gibt es so bei mir überhaupt nicht. Ich vermute der wichtige Unterschied ist, dass dort VCL LiveBindings beschrieben werden. Ich arbeite jedoch mit FMX. (Prima, dass die Interfaces da unterschiedlich zu sein scheinen.....)

Ich habe nun alles durch. Alle Komponenten die in irgendeiner Weise an den Bindings oder der Datenquelle beteiligt sind habe ich Disabled/Enabled, Refreshed, Close/Open, Tänzchen gemacht, Weihrauch verströmt. Nichts. Meine DropDowns versorgen sich EIN Mal bei Programmstart, und dann niemals wieder. Das kann's doch eigentlich nicht sein, oder? Das ist doch absolute Basis-Funktion, ein Musterbeispiel für was man LiveBindings überhaupt haben wöllte. Wie kann sowas ungetestet in einem Release landen?


Hätte sonst noch ggf. jemand eine schlaue Idee? Ich will mein Programm eigentlich nicht nach jeder Änderung in meinen Tabellen neu starten lassen um diese in den Auswahlboxen zu übernehmen...

(Sorry wenn das etwas angepinkelt klingt. Bin ich auch. Aber nicht von euch! <3 )
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
DenkDirNix

Registriert seit: 13. Dez 2018
73 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Combobox lookup refresh Items

  Alt 15. Jan 2022, 17:30
Hallo,

ich hänge mich mal an diesen Thread dran da die Überschrift passt und man ihn deshalb beim Suchen findet. Mein Problem betrifft allerdings die ComboBox unter FMX. Bin FMX-Anfänger...

Frage: Wie ändere ich die in der DropDownList anzuzeigenden Einträge zur Laufzeit? Das angehängte Beispiel zeigt, dass sich bei Änderung (durch Click auf den Button) zwar die Titelzeile der ComboBox korrekt ändert, nicht aber der betreffende Eintrag in der DropDownList.

Noch verwirrender: Beim ERSTEN Click tut er es manchmal(!) doch. Bitte mehrmals probieren.

Und on top: Bei Auswahl des geänderten (falsch angezeigten) Eintrags wird dann doch der Eintrag MIT Änderung in die Titelzeile übernommen. Ist also nur ein Anzeige-Problem.
Angehängte Grafiken
Dateityp: jpg Test.jpg (5,9 KB, 21x aufgerufen)
Angehängte Dateien
Dateityp: zip ComboBoxTest.zip (5,8 KB, 5x aufgerufen)

Geändert von DenkDirNix (15. Jan 2022 um 18:09 Uhr)
  Mit Zitat antworten Zitat
Carsten Hölscher

Registriert seit: 29. Jul 2008
77 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Combobox lookup refresh Items

  Alt 15. Jan 2022, 17:54
Edit: Also bei mir geht dsa korrekt unter aktuellem Delphi 11 und Windows 11
Carsten

Geändert von Carsten Hölscher (15. Jan 2022 um 18:00 Uhr)
  Mit Zitat antworten Zitat
DenkDirNix

Registriert seit: 13. Dez 2018
73 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Combobox lookup refresh Items

  Alt 15. Jan 2022, 17:58
ComboBox1.Items[i]:='neuer Text'; um den i. Eintrag zu ändern
Dies scheint es nicht zu tun wie man sich das denkt, siehe angehängtes Testprojekt.
Und auch der oben angehängte Screenshot zeigt doch die eigentlich per Definition ausgeschlossene Inkonsistenz zwischen DropDownList und Titelzeile der ComboBox.

Geändert von DenkDirNix (15. Jan 2022 um 18:01 Uhr)
  Mit Zitat antworten Zitat
Carsten Hölscher

Registriert seit: 29. Jul 2008
77 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Combobox lookup refresh Items

  Alt 15. Jan 2022, 18:21
Vielleicht liegt es an Delphi 11?


Carsten
  Mit Zitat antworten Zitat
DenkDirNix

Registriert seit: 13. Dez 2018
73 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Combobox lookup refresh Items

  Alt 16. Jan 2022, 08:18
Ich kann mir schwer vorstellen, dass Versionen vor Delphi 11 solch ein gravierendes und offensichtliches Problem haben. Deshalb suche ich den Fehler noch in meinem Code. Jedenfalls solange hier niemand das Problem (beschrieben in Beitrag #8) mit Version 10.4 nachvollziehen kann.

Hier nochmal die ausführliche Beschreibung (Source ist auch in Beitrag #8 gepostet):

Eine FMX-ComboBox ist mit drei Einträgen "00" , "11" , "22" gefüllt. Bei Click auf den Button wird Eintrag 1 (also die "11") geändert indem die Stringlänge angehängt wird. Jetzt enthält die Titelzeile der ComboBox korrekt "112". Wenn man die DropDownListe aufklappt steht dort aber noch "11"!

Achtung: Häufig tritt dieser Fehler beim ersten Mal nicht auf sondern erst ab dem zweiten Click auf den Button. Dann also ComboBoxText "1123" und DropDownList-Item1 "112" (wie im Screenshot in Beitrag #8 gezeigt).

Kann das jemand nachvollziehen?
Habe ich in der ComboBox irgendeine Eigenschaft falsch gesetzt?

Anmerkung: In einem VCL-Projekt mit ComboBox-Style=csDropDownList (was der FMX-ComboBox wohl am nächsten kommt) tritt der Fehler nicht auf.

Geändert von DenkDirNix (16. Jan 2022 um 08:36 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#8

AW: Combobox lookup refresh Items

  Alt 16. Jan 2022, 10:27
Es gibt ja mehrere Varianten zum Füllen:
* direkt beim Erstellen/Laden der Form und dann unverändert
* irgendwann, aber nie während, bzw. kurz bevor aufgepoppt wird
* im OnClick, bzw. OnDropDown
* während schon offen ist

Erstmal zur VCL:
* TComboBox kein Problem
* TComboBoxEx geht garnicht, sobald ich einmal Items.Clear hatte (im Debugger kommt sogar eine Exception)

* erstaunlich, gab es kein Clear und es gab noch nie Items (leer erstellt), dann geht bei Beiden das Dropdown mit einer Leerzeile auf
* im FMX geht das DropDown nicht auf, wenn es nichts gibt (hätte ich von Windows auch fast erwartet)

Delphi-Quellcode:
// ComboBox1.OnDropDown + ComboBoxEx1.OnDropDown
procedure TForm5.ComboBox1DropDown(Sender: TObject);
  ComboBox1.Items.Clear;
  ComboBoxEx1.Items.Clear;
  Timer1.Tag := 10;
  Timer1.Enabled := True;
  //Timer1Timer(nil); // egal ob sofort auf, also erstmal ohne einen Eintrag, oder ob nicht leer ... kein Unterschied
end;

// Timer1.OnTimer mit Timer1.Enabled=False
procedure TForm5.Timer1Timer(Sender: TObject);
begin
  //ComboBox1.Items.Add(Timer1.Tag.ToString);
  //ComboBoxEx1.Items.Add(Timer1.Tag.ToString);
  SendTextMessage(ComboBox1.Handle, CB_ADDSTRING, 0, Timer1.Tag.ToString);
  SendTextMessage(ComboBoxEx1.Handle, CB_ADDSTRING, 0, Timer1.Tag.ToString);
  Timer1.Tag := Timer1.Tag - 1;
  if Timer1.Tag = 0 then
    Timer1.Enabled := False;
end;

// ComboBox1.OnCloseUp + ComboBoxEx1.OnSelect
procedure TForm5.ComboBox1CloseUp(Sender: TObject);
begin
  Timer1.Enabled := False;
  ComboBox1.Items.Clear;
  ComboBoxEx1.Items.Clear;
end;
Beim FMX mit TComboBox oder TComboEdit
* beim TComboEdit funktioniert auch garnichts
* die TComboBox geht nur auf, wenn vor OnPopup Einträge vorhanden waren
* * und es ist, kranker Weise, auch garnicht möglich im OnDropDown die Items zu ändern > es werden die alten Items angezeigt



Fazit:
* vorher DummyItems drin
* bei FMX immer vorher füllen, da das OnDropDown absolut nutzloser Schrott ist
Ein Therapeut entspricht 1024 Gigapeut.

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

Registriert seit: 13. Dez 2018
73 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Combobox lookup refresh Items

  Alt 16. Jan 2022, 17:46
* * und es ist, kranker Weise, auch garnicht möglich im OnDropDown die Items zu ändern > es werden die alten Items angezeigt
Danke @himitsu. Das gilt nicht nur für Änderungen innerhalb des OnDropDown-Events!

Es wäre vielleicht am einfachsten wenn wir anhand meines Beispiel-Projektes aus Beitrag#8 diskutieren könnten. Einfach mal herunterladen, erzeugen und den Button clicken. Ich glaube wir haben das Mißverständnis, dass ich mit "Button" von der TButton-Komponente in meinem Beispiel spreche und Du von der DropDown-Schaltfläche an der ComboBox.
  Mit Zitat antworten Zitat
Klaus01

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

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
Antwort Antwort
Seite 1 von 2  1 2      

 

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 22:38 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