![]() |
Combobox mit Multiselect
Hallo Leute,
ich möchte eine ComboBox erstellen, die eine Mehrfachauswahl zulässt. Weiss jemand wie das geht ? Vielleicht kann ich ja auch eine Listbox dazu bringen, dass man sie genaugleich aufklappen kann wie eine ComboBox. :coder2: Ich hab da schon einiges durchgesucht. Wäre super, wenn ihr mir helfen könntet. |
Re: Combobox mit Multiselect
Hallo maeru,
herzlich willkommen in der Delphi-PRAXiS. Hast du dir schon überlegt, was du mit den ausgewählten Strings machen willst? Es handelt sich bei einer ComboBox letzten Endes um ein single line edit control, welches über die aufgeklappte ListBox befüllt wird - vorausgesetzt der richtige Style wurde eingestellt. Ich kann da keinen Sinn entdecken. Beschreibe doch mal, was du mit einer solchen Komponente erreichen willst. Vielleicht finden wir dann eine bessere Lösung. Freundliche Grüße vom marabu |
Re: Combobox mit Multiselect
Eigentlich ist es ganz einfach. Ich hab so etwas wie eine Profisuche. Jetzt kann mann mehrere Beiträge auswählen (Combo oder Listbox). Von dieser Auswahl suche ich dann den Primärschlüssel (Object) und lasse das ganze gegen meine Datenbank laufen.
Ich weiss, das die Combo nicht gerade das richtige Element dafür ist. Wie gesagt, wenn ich die Listbox dazu bringen kann, sich so aufklappen zu lassen wie eine Combo bin ich mehr als zufrieden. Gruss |
Re: Combobox mit Multiselect
Gut dass wir nicht mehr über die ComboBox reden müssen, die ListBox gefällt mir irgendwie besser. Dein Wunsch sie auf und zu klappen zu können deutet darauf hin, dass die Suchwörter nur während der Auswahl sichtbar sein sollen. Warum öffnest du nicht einfach einen Dialog (mein Favorit), der die ListBox und zwei Schalter (OK und Abbrechen) aufnimmt?
Wenn du überhaupt nicht vom Klappmechanismus abzubringen bist, dann gefällt dir vielleicht das hier:
Delphi-Quellcode:
Hierbei wird die ListBox automatisch maximiert, wenn sie den Focus erhält und minimiert wenn sie ihn verliert. Während der Entwurfsphase legst du MinHeight und MaxHeight fest, setzt IntegralHeight auf true und sorgst dafür, dass die ListBox in der Z-Order vor den anderen Controls liegt.
procedure TDemoForm.ListBoxEnter(Sender: TObject);
begin ListBox.Height := ListBox.Constraints.MaxHeight; end; procedure TDemoForm.ListBoxExit(Sender: TObject); begin ListBox.Height := ListBox.Constraints.MinHeight; end; marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 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 by Thomas Breitkreuz