Entwickler-Ecke

LCL-Komponenten - Alternative zu TCheckComboBox gesucht


hydemarie - Di 15.03.22 18:53
Titel: Alternative zu TCheckComboBox gesucht
Für eine GUI-Überarbeitung von groffstudio würde ich gern eine Dropdownbox mit Checkboxen verwenden. Theoretisch funktioniert die TCheckComboBox für meine Zwecke, hat aber zwei Nachteile:
  1. Man kann nur 1 Checkbox auswählen und muss die Dropdownbox dann jedes Mal erneut öffnen.
  2. Die Darstellung aller ausgewählten Optionen gefällt mir nicht - ich scheine nur die jeweils zuletzt ausgewählte Checkbox anzeigen zu können.

Gibt es da vernünftige Alternativen?


Sinspin - Mi 16.03.22 08:23

Hey, wieso du im DropDown nur eins auf einmal auswählen kannst ist mir schleierhaft.
Eventuell ein Event was Nebeneffekte hat? Oder irgend eine komische Einstellung?

Alternative? Ein eigener modaler Dialog mit einer CheckListBox?
Ich mache sowas oft mit ButtonEdits. Sozusagen Detailsettings die nur sichtbar sind wenn man drauf clickt.


hydemarie - Mi 16.03.22 15:45

Also laut Lazarus-Bugtracker ist das einfach ein Effekt der unzureichenden Qualitätsprüfung der Controls. Oder geht es bei dir?


Sinspin - Mi 16.03.22 18:24

Lazarus. Sorry, das hatte ich übersehen.
Da wird dir nichts anderes übrigbleiben als es selber anzupassen oder was anderes zu nehmen.

Ich verwende bei Lazarus nur mein eigenes Framework und Render selber. Dabei kann nicht viel schief gehen. Hat nur eine Hand voll Komponenten ;-)
Ich habe auch nicht die neuste Version. Für mich war damals nur wichtig das ich als 64 Bit übersetzen kann denn ich brauche extrem viel Speicher.


ub60 - Mi 16.03.22 20:21

Ich habe mal versucht, das nachzuvollziehen.
Zuerst hatt alles geklappt, auch die Mehrfachauswahl. Dabei habe ich die DropDown-Liste immer mit dem DropDown-Pfeil geöffnet.
Dann habe ich die DropDown-Liste mit einem Drücken auf den dargestellten Listeneintrag geöffnet, und ab dann funktioniert es nicht mehr.
Das scheint also ein Problem der Komponente zu sein. Eventuell hilft das ja bei der Fehlersuche/behebung.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
begin
  ListBox1.Items.Clear;
  for i:=0 to CheckComboBox1.Items.Count-1 do
    if CheckComboBox1.Checked[i]
      then ListBox1.Items.Add(CheckComboBox1.Items[i]);
end;

cb1

ub60