| Autor |
Beitrag |
motion
      
Beiträge: 295
XP, Linux
D7 Prof
|
Verfasst: Fr 18.02.05 01:15
Form A enthält eine Action, welche auf den ShortCut "Esc" die Close Methode ausführt.
Form B das gleiche.
Form A ruft Form B modal auf. Wird in Form B die ESC-Taste einmal gedrückt, so schließt Form B und gleich darauf Form A.
Wie läßt sich das verhindern?
mfG
Gunther
|
|
jaevencooler
      
Beiträge: 166
Erhaltene Danke: 6
MS-DOS,Win32, Win95, Win 98, Me,XP, Linux, NT4.0, NT 2000-2008, Vista, Windows 7
Turbo Pascal,D1 Enter,D2 Enter,D3 Enter,D5 Enter, Kylix, D2007, PL/SQL, MS/SQL, Delphi 2010, Delphi XE
|
Verfasst: Fr 18.02.05 09:40
Titel: Re: Shortcuts lösen Actions auch in übergeordnetn Formularen
Guten Morgen,
| motion hat folgendes geschrieben: | Form A enthält eine Action, welche auf den ShortCut "Esc" die Close Methode ausführt.
Form B das gleiche.
Form A ruft Form B modal auf. Wird in Form B die ESC-Taste einmal gedrückt, so schließt Form B und gleich darauf Form A.
Wie läßt sich das verhindern?
|
Du musst das Key-Event auf Null (0) setzen.
Also wenn Du abfragst if key = vk_escape then
blablabla
key := 0;
Ciao Michael
_________________ Wissen ist Macht, nichts wissen macht auch nichts...
|
|
motion 
      
Beiträge: 295
XP, Linux
D7 Prof
|
Verfasst: Fr 18.02.05 15:56
Michael,
theoretisch schon, aber ich arbeite hier mit Actions und ActionsLists, erzeuge also überhaupt keine Events auf KeyDown/Keyup/Keypressed. Deshalb habe ich da direkt keinen Eingreifpunkt, um die Keyboard Events abzufangen.
Aber ich habe einen Tip von einem Arbeitskollegen bekommen, in der ESC-Action einfach die Keyboard Buffer zu leeren durch ...
hier ein kurzes Codes-Snippet:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TfrmZuteilenFuerMaschine.ClearKeyboardAndMouseBuffer; var Msg: TMsg; begin while PeekMessage(Msg, Handle, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE) do begin end; PM_REMOVE) <> 0) do while PeekMessage(Msg, Handle, WM_MOUSEFIRST, WM_MOUSELAST, PM_REMOVE) do begin end; PM_REMOVE) do end; |
Ich werde das mal heute abend testen und dann hier berichten.
Moderiert von raziel: Code- durch Delphi-Tags ersetzt.
|
|
motion 
      
Beiträge: 295
XP, Linux
D7 Prof
|
Verfasst: Sa 19.02.05 19:07
Nein, das hat leider auch nicht geholfen.
Es ist mir auch nicht gelungen das Fehlverhalten in einem leeren Testprojekt nachzubilden.
Irgendwo in meiner Applikation ist also der Wurm drin.
Also heißt es: Weitersuchen!
|
|
motion 
      
Beiträge: 295
XP, Linux
D7 Prof
|
Verfasst: Sa 19.02.05 22:33
Ich glaube den Verursacher habe ich gefunden:
Der Fehler tritt nur auf, bei Auslösen einer Action per Shortcut, wenn der Focus auf einem Edit-Feld von TMS-Software steht (AdvEdit). Mit der Standard Borland TEdit tritt der Fehler nicht auf.
Okay, also werde ich mal versuchen, ein kleines Demo-Projekt aufzusetzen, welches das Fehlverhalten zeigt. Dann zu TMS schicken und schauen, wie sich der Fehler beseitigen läßt.
|
|
|