Autor Beitrag
hRb
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 267
Erhaltene Danke: 12



BeitragVerfasst: Mo 30.08.21 18:13 
Problem: mit OnKeyPress-Ereignes bei TEdit
(arbeite mit Delphi 10.3 Community-Edition)
Ich habe erwartet, dass alle Tasten, die Einfluss auf den Text nehmen, das OnKeyPress-Ereignis auslösen. Das gilt offenbar nicht für die Taste "Entf", obwohl es den String verändern kann.
Wie kann ich denn verhindern, dass "Entf" (Clear) ausgelöst wird bzw. zur Wirkung kommt? Ist doch normaler Tastencode (#C). War dies schon immer so?
Danke für Tipps
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 30.08.21 18:54 
Probiere es einmal mit OnKeyDown / OnKeyUp.
hRb Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 267
Erhaltene Danke: 12



BeitragVerfasst: Mo 30.08.21 22:31 
Hallo Jaenicke,
danke für Hinweis. War mir die Reihenfolge in der Abarbeitung nicht bekannt. Glaubte Keypress kommt zuerst. Tatsächlich kommt OnKeyDown früher und reagiert auf <Entf>. Werde meine ganzen Prüfungen in dieses Ereignis verlegen.
Dennoch: ist bekannt warum Keypress bei der Taste <Entf> nicht anspricht?
hRb
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 30.08.21 22:46 
Wenn du einfach mal einen Haltepunkt auf die Ereignisse setzt, kannst du dir den Stacktrace anschauen. Dann findest du die Ursache ganz einfach:

StacktracesKeyEvents

Wenn eine Taste gedrückt wird, schickt Windows dir WM_KEYDOWN und WM_KEYUP. Zusätzlich wird noch WM_CHAR geschickt, aber wie der Name schon sagt nur für Zeichen. Da Entf kein Zeichen ist, wird WM_CHAR auch nicht geschickt und entsprechend OnKeyPress auch nicht ausgelöst.
Einloggen, um Attachments anzusehen!
hRb Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 267
Erhaltene Danke: 12



BeitragVerfasst: Mo 30.08.21 23:06 
Ok, verstanden
Allerdings fällt mir jetzt wieder ein, dass ich Keydown schon einmal getestet habe.
Meine Prüfungen ins Keydown zu verlegen, funktioniert nicht. D.h. ich muss sowohl Keydown auswerten (für Taste <Entf>) UND Keypress (für Alphazeichen). Man lernt immer wieder zu.
Danke hRb
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 31.08.21 09:38 
Das ist richtig:
Im OnKeyDown kann man den Tastendruck z.B. nicht ignorieren, damit das Zeichen nicht ankommt.