Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Combobox lookup refresh Items

  Alt 16. Jan 2022, 11: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
$2B or not $2B

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