Das Problem betrifft den Fall, wenn in der Listbox MultiSelect eingestellt ist und man in den leeren Bereich der Listbox unterhalb des letzten Eintrags klickt. Wenn mehrere Einträge in der ListBox markiert sind, ist das Verhalten bei Links-Klick in den leeren Bereich je nach BS und Widgetset unterschiedlich:
- Linux gtk2/3: die Markierungen bleiben unverändert, der Select-Status in der OnClick-Procedure entspricht dem, was man sieht und der ItemIndex der ListBox bleibt unverändert
- Linux qt5/6: die Markierungen verschwinden, alle Select-Status bleiben in der OnClick-Procedure unverändert auf True. Bei einem weiteren Click irgendwohin ist ersichtlich, dass die Status offenbar nach Ablauf der OnClick-Prozedur verändert werden. Der ItemIndex bleibt unverändert.
- Windows: nur die vor dem Leer-Click zuletzt angeklickte Zeile bleibt markiert, alle anderen Markierungen verschwinden. In der OnClick-Prozedur entsprechen die Select-Status dem, was man sieht. Der ItemIndex ist unabhängig von jeglicher Markierung immer auf der letzten Zeile
Aufgefallen ist mir noch, dass bei Doppelklick ausser der OnDblClick- auch die OnClick-Procedure ein- oder machmal auch zweimal startet. Wie soll man da zwischen Einfach- und Doppelklick unterscheiden?
Ein Beispielprogramm und die Unterschiede finden sich in den angehängten Dateien.
Ist das nur bei mir so und/oder ist das (zum Teil) Absicht?
Kann man Einfach- und Doppelklicks in den leeren Bereich irgendwie verhindern oder zumindest nicht an die ListBox weiterreichen?
Mein System:
Lazarus 4.6 / FPC 3.2.2
Win 11 Pro 25H2, Build 26200.8037 / 1000.26100.300.0
Linux : EndeavourOS, Lazarus aus Repo der Ditribution, qt5pas 1.2.16, qt6pas 6.2.10