AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Win10: Nach Klick auf Button mittels Leertaste wird OnFormMouseDown nicht ausgelöst
Thema durchsuchen
Ansicht
Themen-Optionen

Win10: Nach Klick auf Button mittels Leertaste wird OnFormMouseDown nicht ausgelöst

Ein Thema von Michael II · begonnen am 30. Jan 2019 · letzter Beitrag vom 31. Jan 2019
Antwort Antwort
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
760 Beiträge
 
Delphi 11 Alexandria
 
#1

Win10: Nach Klick auf Button mittels Leertaste wird OnFormMouseDown nicht ausgelöst

  Alt 30. Jan 2019, 00:25
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...
Michael Gasser
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
701 Beiträge
 
Delphi 12 Athens
 
#2

AW: Win10: Nach Klick auf Button mittels Leertaste wird OnFormMouseDown nicht ausgelö

  Alt 30. Jan 2019, 11:45
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?
Peter Below
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
760 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Win10: Nach Klick auf Button mittels Leertaste wird OnFormMouseDown nicht ausgelö

  Alt 30. Jan 2019, 18:53
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
Michael Gasser
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#4

AW: Win10: Nach Klick auf Button mittels Leertaste wird OnFormMouseDown nicht ausgelö

  Alt 30. Jan 2019, 19:21
Ist das eventuell ein Laptop/Notebook?
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
760 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Win10: Nach Klick auf Button mittels Leertaste wird OnFormMouseDown nicht ausgelö

  Alt 30. Jan 2019, 20:21
Ja, ein Dell inspiron 7520.
Michael Gasser
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#6

AW: Win10: Nach Klick auf Button mittels Leertaste wird OnFormMouseDown nicht ausgelö

  Alt 30. Jan 2019, 21:30
https://www.dell.com/community/Lapto...k/td-p/4032580

Zitat:
This has been bugging me for ages, finally found a solution.

Open the registry editor ( Start > Run > regedit ) and go to
Code:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\Elantech\OtherSetting
There are two keys to change, one called DisableWhenType_AllArea and one called DisableWhenType_Enable

They will both be set to "1", double click them and change them both to "0"

exit, restart and problem solved Smiley Happy
Warum?

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.
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
760 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Win10: Nach Klick auf Button mittels Leertaste wird OnFormMouseDown nicht ausgelö

  Alt 31. Jan 2019, 01:10
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.
Michael Gasser
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#8

AW: Win10: Nach Klick auf Button mittels Leertaste wird OnFormMouseDown nicht ausgelö

  Alt 31. Jan 2019, 07:21
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.
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
760 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Win10: Nach Klick auf Button mittels Leertaste wird OnFormMouseDown nicht ausgelö

  Alt 31. Jan 2019, 11:53
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.
Michael Gasser
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz