![]() |
Win10: Nach Klick auf Button mittels Leertaste wird OnFormMouseDown nicht ausgelöst
Delphi 7 / Delphi 10.3
Ich setze einen Button und einen Label auf ein Form und ergänze OnButtonClick und OnFormMouseDown wie folgt:
Delphi-Quellcode:
var t : uint64;
procedure TForm17.Button1Click(Sender: TObject); begin label1.caption := 'B'; t := GetTickCount64; end; procedure TForm17.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if t <> 0 then begin label1.Caption := 'M ' + (gettickcount64-t).ToString; t := 0; end; end; 1. Wenn ich nun das Programm laufen lasse und via <Leertaste> OnButtonClick auslöse und danach sofort irgendwo aufs Form klicke, dann werden solche Klicks auf meinem Win 10 (Build 17763) während ca. w=800ms ignoriert. Erst nach der Zeit w wird durch Klick aufs Form OnFormMouseDown ausgelöst. 2. Wenn ich den OnButtonClick hingegen durch Mausklick auf den Button auslöse und danach sofort irgendwo aufs Form klicke, wird OnFormMouseDown ausgelöst. 3. Wenn ich das gleiche Programm auf einem XP Rechner laufen lasse und via <Leertaste> den Button klicke und danach sofort irgendwo aufs Form klicke, dann wird OnFormMouseDown ausgelöst. Liegt (1., w=800ms) an Win10 oder irgendwelchen Systemeinstellungen? Kann ich dieses Verhalten durch Setzen von irgendwelchen Werten via mein Programm so beeinflussen, dass w=0 wird? Besten Dank für jede Idee... |
AW: Win10: Nach Klick auf Button mittels Leertaste wird OnFormMouseDown nicht ausgelö
Ich kann dein Problem nicht reproduzieren (Win10 Home, Delphi 10.3 Rio, Vcl app, Win32 Target platform). Bei mir feuert der OnMouseDown-Event immer, egal wie ich den Button klicke.
Hast Du eventuell einen anderen Rechner verfügbar, auf dem Du das mal ausprobieren könntest? |
AW: Win10: Nach Klick auf Button mittels Leertaste wird OnFormMouseDown nicht ausgelö
Hallo Peter
besten Dank fürs Testen. Ich habe nun auf meinem Win10 Home 17763 rasch Visual Studio 2017 installiert und mit VB getestet - gleiches Verhalten auch hier. Auch im "abgesicherten Modus > Minimal" verhält sich dieses Miniprogramm gleich. (Ressourcenschutz zeigt alles OK an.) Ich werde dann noch auf anderen Win10 testen - selbst habe ich nur Zugriff auf je ein XP, 7, 10 (und Server 2012, 2016). Wenn jemand weiss, dass dies an einer Win-Systemeinstellung liegt und für ein Delphi Programm (oder allgemein) deaktiviert werden kann, dann wäre das echt schön. Da das Problem ausserhalb von Delphi liegen muss poste ich zum Thema nur noch was, wenn ich den Grund und eine Lösung finden sollte. Gruss Michael |
AW: Win10: Nach Klick auf Button mittels Leertaste wird OnFormMouseDown nicht ausgelö
Ist das eventuell ein Laptop/Notebook?
|
AW: Win10: Nach Klick auf Button mittels Leertaste wird OnFormMouseDown nicht ausgelö
Ja, ein Dell inspiron 7520.
|
AW: Win10: Nach Klick auf Button mittels Leertaste wird OnFormMouseDown nicht ausgelö
![]() Zitat:
Da das Touchpad unterhalb der Tastatur angebracht ist, da wo man in der Regel die Handballen hat, wenn man am Tippen ist, und ratzfatz hat man beim Tippen aus Versehen mit dem Handballen auf dem Touch einen Klick ausgelöst, positioniert damit den Cursor neu und die Eingaben landen an Stellen, die man nicht möchte. Darum wird der Klick des Touchpads bei einer Tastatureingabe für den Zeitraum x gesperrt, um dieses nervige Verhalten zu unterbinden. |
AW: Win10: Nach Klick auf Button mittels Leertaste wird OnFormMouseDown nicht ausgelö
Besten Dank Schokohase. Genau dies ist sicher der Grund. Von den beiden zitierten Werten war einer auf 1.
Das Programm verhält sich zwar nach Änderung des Werts und Win Neustart immer noch gleich; aber es gibt weitere Werte und Wartezeiten, welche man via Registry ändern kann. Da diese Werte sicher nicht bei jedem Touchpad gleich sind und Windows wahrscheinlich keine "Beachte/Ignoriere Touchpad Einstellungen" Funktion z.V. stellt, werde ich wohl bei meinem Programm (Kartenspiel) was ändern. |
AW: Win10: Nach Klick auf Button mittels Leertaste wird OnFormMouseDown nicht ausgelö
Nur falls du das falsch verstanden haben solltest:
Dieses Verhalten ist kein Standard-Verhalten von Windows sondern von einer/m separat installierten Anwendung/Treiber von DELL. |
AW: Win10: Nach Klick auf Button mittels Leertaste wird OnFormMouseDown nicht ausgelö
Ich habe dich absolut richtig verstanden.
Mit meinem Kommentar meinte ich: Es wäre gut, wenn die TouchPad Hersteller eine WindowsEinstellung "TouchPad_Delays_Erlauben" beachten müssten und wenn man diesen Wert via eine Windowsfunktion für ein Programm setzen könnte. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 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