![]() |
Win10 -> TListBox -> MouseWheel -> ausserhalb des Controls scrollen
Ich wollte kurz nachfragen, ob Euch das aufgefallen ist und was eine mögliche Lösung ist, before ich gross rumprogrammiere.
Bei uns wird jetzt doch mal endlich von Win8 auf Win10 umgestellt. Einige Abteilungen kriegen jetzt schon Win10 Rechner, wir Entwickler sind noch auf Win8. Jetzt habe ich in einem Programm eine TListBox und einen Button. In der ListBox werden oft so viele Daten angezeigt, dass man scrollen muss, um bis zum Ende zu kommen. Dann den Knopf drücken, da werden dann die neuen Daten geladen und der Focus vom Button wieder auf die TListBox gelegt. Unter Win8 kann ich mit der Mouse über dem Knopf bleiben und die Listbox scrollen, weil sie ja den Focus hat. Unter Win10 scrollt es nicht mehr, sowie man ausserhalb der TListBox ist, auch wenn diese den Focus hat. Gibt es eine einfach Möglichkeit, das Verhalten von Win8 an der Stelle wieder herzustellen ? Meine Idee ist dem unterliegendem Form das Scrollen abzufangen und an die TListBox weiterzugeben. Danke schonmal... |
AW: Win10 -> TListBox -> MouseWheel -> ausserhalb des Controls scrollen
Liste der Anhänge anzeigen (Anzahl: 1)
Hi, das hängt von den Benutzereinstellungen (inaktive Fenster beim Draufzeigen scrollen) ab. Das Verhalten immer zwingend für den Benutzer so einzustellen ist meines Erachtens aber der falsche Weg.
|
AW: Win10 -> TListBox -> MouseWheel -> ausserhalb des Controls scrollen
Wir machen interne Software und die Fachabteilung wünscht sich das halt so.
Der Name "inaktive Fenster beim Draufzeigen scrollen" ist aber irreführend in dem Fall, weil ich es 1.) abschalten muss, damit es geht und 2.) das Fenster ja nicht inaktiv ist |
AW: Win10 -> TListBox -> MouseWheel -> ausserhalb des Controls scrollen
Zitat:
|
AW: Win10 -> TListBox -> MouseWheel -> ausserhalb des Controls scrollen
Für Otto Normal ist ein Fenster halt das Ding mit den drei _ □ × Buttons, wir Delphi-Entwickler wissen halt dass aus Windows-Sicht selbst ein Button ein Fenster ist 😎
Windows hätte das eher als "Elemente" statt "Fenster" bezeichnen sollen. |
AW: Win10 -> TListBox -> MouseWheel -> ausserhalb des Controls scrollen
Zitat:
|
AW: Win10 -> TListBox -> MouseWheel -> ausserhalb des Controls scrollen
Gibt es da sowas wie eine API Funktion, wo man das für seine eigene Anwendung an- oder abstellen kann ?
|
AW: Win10 -> TListBox -> MouseWheel -> ausserhalb des Controls scrollen
Zitat:
|
AW: Win10 -> TListBox -> MouseWheel -> ausserhalb des Controls scrollen
Zitat:
Das Problem sollte sich aber beheben lassen, in dem man im Formular die Wheel-Messages abfängt und an die Listbox weiterleitet. Man muss nur aufpassen, dass sie dann nicht doppelt verarbeitet werden, wenn die Listbox den Focus hat. |
AW: Win10 -> TListBox -> MouseWheel -> ausserhalb des Controls scrollen
Zitat:
|
AW: Win10 -> TListBox -> MouseWheel -> ausserhalb des Controls scrollen
Zitat:
|
AW: Win10 -> TListBox -> MouseWheel -> ausserhalb des Controls scrollen
Was kommt als nächstes? Dem Benutzer die Bildschirmauflösung oder DPI-Skalierung ändern weil das dem Programm besser passt?
Wenn, dann ist der richtige Weg die entsprechenden Messages abzufangen. |
AW: Win10 -> TListBox -> MouseWheel -> ausserhalb des Controls scrollen
Ok, danke, das hatte ich befürchtet.
Ich hatte nur gehgofft, dass es da was gibt, weil die Winforms von DevExpress sowas können. Die haben so eine Property ![]() |
AW: Win10 -> TListBox -> MouseWheel -> ausserhalb des Controls scrollen
Ich vermute mal, die fangen die Scroll-Messages im Form ab und verteilen die dann entsprechend. Das funktioniert ja auch nur mit ganz bestimmten DevExpress-Form-Typen.
|
AW: Win10 -> TListBox -> MouseWheel -> ausserhalb des Controls scrollen
Zitat:
Oder ist diese Lösung zu kompliziert? |
AW: Win10 -> TListBox -> MouseWheel -> ausserhalb des Controls scrollen
Zitat:
|
AW: Win10 -> TListBox -> MouseWheel -> ausserhalb des Controls scrollen
Etwas Quelltext:
Code:
Du kannst ggf. mit PtInRect noch prüfen in welchem Breich das so laufen soll.
procedure TMainForm.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
begin if Msg.message=WM_MOUSEWHEEL then begin SendMessage(ListBox1.Handle, WM_MOUSEWHEEL, Msg.wParam, Msg.lParam); Handled:=True; end; end; Beste Grüße |
AW: Win10 -> TListBox -> MouseWheel -> ausserhalb des Controls scrollen
Wäre da GetFocus anstatt ListBox1.Handle nicht etwas generischer? Sonst wirkt das Scrollen ja immer nur in der ListBox.
|
AW: Win10 -> TListBox -> MouseWheel -> ausserhalb des Controls scrollen
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Man postet die Lösung und trotzdem werden weiterhin Beiträge mit nicht passenden Lösungen oder sogar der fast gleichen Lösung geschrieben. (Also jetzt mal unabhängig zu meiner Registry-Idee, die wirklich nur als dreckiger Workaround verstanden werden sollte) Anhang 54284 |
AW: Win10 -> TListBox -> MouseWheel -> ausserhalb des Controls scrollen
Sagen wir mal so:
Um den ersten korrekten Lösungsvorschlag als solchen zu erkennen, muss das Problem soweit verstanden sein, dass dieser Lösungsvorschlag als korrekt erkannt werden kann. Ist dem nicht so, werden alternative Lösungsvorschläge gesucht. Dabei wird sich langsam aber sicher soweit in die Materie eingearbeitet, dass zu einem späteren Zeitpunkt dann ein identischer Vorschlag als korrekter Lösungvorschlag erkannt werden kann. Pflapsig formuliert: Ihr seid mit Euren korrekten Lösungsvorschlägen manchmal einfach nur zu schnell, oder Ihr seid mit Euren Lösungsvorschlägen der Zeit weit voraus ;-) Es ist halt ein allgemeines menschliches Problem: Lieber lernt man aus eigener Erfahrung und eigenem "Aufdiefressefallen", als (blind) auf die Erfahrungen anderer zu vertrauen. Nennt man auch: Lebenserfahrung sammeln. Wie z. B. die heiße Herdplatte. Das sie heiß ist, erfährt man als Kind nicht, weil andere es sagen, sondern weil man sich die Finger verbrannt hat. Ist einfach so, kein Grund zur Aufregung, kein Grund sich ignoriert zu fühlen, ist nur der normale tägliche Wahnsinn ;-) |
AW: Win10 -> TListBox -> MouseWheel -> ausserhalb des Controls scrollen
Ich habe Lösungen nicht ignoriert.
IM Endeffekt habe ich eingebaut, was auch Dummzeuch vorgeschlagen hat. Das war auch meine Notlösung, aber ich hatte halt gehofft, dass das Betriebssystem selbst was zur Verfügung stellt. Da nicht alle alles wissen, muss ich natürlich auch ein paar Antworten abwarten. Vielen Dank an alle, die Ideen und Wissen geliefert haben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:58 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-2025 by Thomas Breitkreuz