AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

KeyUp KeyDown arbeitet falsch?

Ein Thema von sko1 · begonnen am 25. Okt 2017 · letzter Beitrag vom 25. Okt 2017
Antwort Antwort
sko1

Registriert seit: 27. Jan 2017
577 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

KeyUp KeyDown arbeitet falsch?

  Alt 25. Okt 2017, 12:12
Hallo,

irgendwie habe ich ein komisches Phänomen:

In einer Form mit KeyPreview = true möchte ich die Shifttaste abfangen und habe dafür im OnKeyDown und im OnKeyUp entsprechenden Code implementiert.

Beim Drücken der Shifttaste wird OnKeyDown gefeuert (wie erwartet) aber dann nach kurzer Verzögerung kommen massig weitere OnKeyDown-Events! Beim KeyUp wird der Event dann nur einmal gefeuert!

Es sieht fast so aus als ob die Shifttaste "repetierend" arbeitet wie die Buchstabentasten!

Liegt das an meiner Tastatur und wenn nein, kann man das irgendwie umgehen?

Ciao
Stefan
  Mit Zitat antworten Zitat
Towmuz

Registriert seit: 21. Sep 2016
Ort: Minden
127 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

AW: KeyUp KeyDown arbeitet falsch?

  Alt 25. Okt 2017, 12:20
Hoi,

das wird wohl mit jeder Taste das selbe Verhalten sein im KeyDown, ansonsten könntest du auch schlecht den Shiftstate abfragen.
Das Gegenstück zu KeyUp ist halt KeyPress.

Mutmaße ich jetzt einfach mal...
Thomas
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
577 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: KeyUp KeyDown arbeitet falsch?

  Alt 25. Okt 2017, 12:22
Nein, KeyPress hat keinen ShiftState-Parameter!

Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.163 Beiträge
 
Delphi 12 Athens
 
#4

AW: KeyUp KeyDown arbeitet falsch?

  Alt 25. Okt 2017, 12:25
Zitat:
Nein, KeyPress hat keinen ShiftState-Parameter!
Intern ja, aber wird von der VCL nicht durchgereicht

Aber man kommt dennoch immer an den Status, der zur aktuellen Message gehört.
Bei Google suchenGetKeyState
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: KeyUp KeyDown arbeitet falsch?

  Alt 25. Okt 2017, 12:37
Ausgehend von der Prämisse, daß die Events korrekt arbeiten: Was ist Dein konkretes Problem? Was willst Du erreichen, das gegenwärtig nicht geht?

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.352 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: KeyUp KeyDown arbeitet falsch?

  Alt 25. Okt 2017, 12:46
Das Verhalten ist korrekt. Denn ob Shift oder eine andere Taste, wenn diese festgehalten wird, folgen nach der eingestellten Verzögerung weitere Ticks im eingestellten Intervall. Diese lösen jeweils ein OnKeyDown aus. Losgelassen wird die Taste dann aber nur einmal.
Du kannst dir aber einfach merken, ob die Taste gerade gedrückt ist oder nicht, wenn du das brauchst, oder wie himitsu schon schrieb den Status direkt abfragen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  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 19:53 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