Listboxitems mit popupmenü "..." am rechten Rand

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
kirchfritz
Beiträge: 216
Registriert: Mo 3. Jan 2011, 13:34
OS, Lazarus, FPC: Win11 (L 3.0 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Nürnberg

Listboxitems mit popupmenü "..." am rechten Rand

Beitrag von kirchfritz »

Hallo,
ich möchte in meinem Windows 11 Programm eine Listbox einsetzen, wo jeder Listboxeintrag am rechten Rand drei Pünktchen besitzt. Klickt man auf die drei Pünktchen soll sich ein Popupmenü öffnen.
Wie realisiert man das?
Listbox_mit_Popupmenü.png
Listbox_mit_Popupmenü.png (29.08 KiB) 2457 mal betrachtet

CCRDudeLaz
Beiträge: 54
Registriert: Do 25. Jan 2024, 08:33
OS, Lazarus, FPC: Win/macOS (L trunk FPC trunk)
CPU-Target: 32+64

Re: Listboxitems mit popupmenü "..." am rechten Rand

Beitrag von CCRDudeLaz »

Übergeordnet eine TScrollBox. Darin entweder dynamisch zur Laufzeit erzeugte Panels mit Unterkomponenten, oder aber Du erstellst einmal einen Frame, der wie ein Listeneintrag aussieht, und erzeugst davon dann dynamisch für jeden Listeneintrag einen in der TScrollBox.

kirchfritz
Beiträge: 216
Registriert: Mo 3. Jan 2011, 13:34
OS, Lazarus, FPC: Win11 (L 3.0 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Nürnberg

Re: Listboxitems mit popupmenü "..." am rechten Rand

Beitrag von kirchfritz »

ich habe dynamisch erzeugte Frames ausprobiert. Leider scheitert das Vorhaben bei mehr als 550 Frames daran, dass die Top-Koordinate des Frames SmallInt überschreitet.
Error.png
Error.png (50.85 KiB) 2445 mal betrachtet

Mathias
Beiträge: 6910
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Listboxitems mit popupmenü "..." am rechten Rand

Beitrag von Mathias »

ich habe dynamisch erzeugte Frames ausprobiert. Leider scheitert das Vorhaben bei mehr als 550 Frames daran, dass die Top-Koordinate des Frames SmallInt überschreitet.
Bei über 500 Einträgen scrollt man sich den Finger wund. Gibt es da keine Alternative mit einem TreeView ?

Ein bisschen Schleichwerbung. Mit GTK4 siehe Anhang ist sowas mit den Buttons in der Listbox möglich.
Man kann dort beliebige Widgets in eine einzelne Lisbox Zelle setzen.
Dateianhänge
Bildschirmfoto vom 2024-12-16 17-58-01.png
Bildschirmfoto vom 2024-12-16 17-58-01.png (36.28 KiB) 2421 mal betrachtet
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1639
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Listboxitems mit popupmenü "..." am rechten Rand

Beitrag von fliegermichl »

Ja, das ist etwas blöd gelöst. Man könnte den Event OnDrawItem verwenden um diese Punkte zu zeichnen.
Der wird allerdings nur dann ausgelöst, wenn die Style Eigenschaft der Listbox <> lbStandard ist.
Wenn das der Fall ist, muss man sich aber vollständig um das zeichnen der Zellen kümmern.

paweld
Beiträge: 85
Registriert: So 11. Jun 2023, 16:01
OS, Lazarus, FPC: Lazarus trunk, FPC fixes

Re: Listboxitems mit popupmenü "..." am rechten Rand

Beitrag von paweld »

Beispiel im Anhang.

Bearbeiten: Popup-Menü anzeigen auf Punktbereich eingegrenzt
Dateianhänge
Project1.zip
(4.17 KiB) 109-mal heruntergeladen
2024-12-16 18_46_51-Source Editor.png
2024-12-16 18_46_51-Source Editor.png (24.8 KiB) 2409 mal betrachtet
Grüße / Pozdrawiam
paweld

sstvmaster
Beiträge: 582
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 3.8
CPU-Target: 32+64bit
Wohnort: Dresden

Re: Listboxitems mit popupmenü "..." am rechten Rand

Beitrag von sstvmaster »

Hallo paweld,

vielen Dank für dein Beispiel. Leider wirft TLBItem einen leak im Debug Modus.

Grüße Maik
LG Maik

Windows 10,
- Lazarus 3.8 (stable) + fpc 3.2.2 (stable)
- Lazarus 4.99 (trunk) + fpc 3.3.1 (main/trunk)

paweld
Beiträge: 85
Registriert: So 11. Jun 2023, 16:01
OS, Lazarus, FPC: Lazarus trunk, FPC fixes

Re: Listboxitems mit popupmenü "..." am rechten Rand

Beitrag von paweld »

Das hatte ich tatsächlich vergessen. Eine korrigierte Version ist beigefügt. Denken Sie auch daran, Objekte zuerst freizugeben, wenn Sie ein Element löschen oder die Liste leeren.
Dateianhänge
Project1.zip
(4.26 KiB) 127-mal heruntergeladen
Grüße / Pozdrawiam
paweld

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1639
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Listboxitems mit popupmenü "..." am rechten Rand

Beitrag von fliegermichl »

Das ist wirklich eine schöne Lösung. Wie ich weiter oben schon geschrieben habe, muss man halt die komplette Darstellung selbst machen.
Es wäre schön, wenn man wie beim VirtualTree die Möglichkeit hätte, einen Event wie z.B. OnAfterDrawItem zu nutzen, um eigene zusätzliche Darstellungsoptionen zu realisieren.

Antworten