Wie kann meine TComponent den ESC-Schlüssel abfangen und damit umgehen?

8

In meinem TComponent gibt es einen Punkt, an dem ich Schlüsselereignisse abhören und die ESC -Schlüssel abfangen und in meiner Komponente verarbeiten, den Tastenanschlag konsumieren / "essen" möchte, so dass zum Beispiel das Eigentümerformular erscheint werde es in diesem Stadium nicht behandeln. Genau wie in TDragObject , wenn Sie beginnen, ziehen Sie sie und brechen Sie sie ab, indem Sie ESC drücken.

Problem ist, dass TDragObject hat AllocateHWnd , die von ihrem Eigentümer Formular mit CN_KEYDOWN gemeldet wird. Aber niemand benachrichtigt meine Komponente.

Muss ich das WindowProc des Formulars durch mein eigenes Formular ersetzen? Wenn ja, wie macht man das dann sozusagen "im Buch"?

Nur um 100% klar zu sein:

%Vor%

Ich habe einen kleinen Test gemacht und es scheint zu funktionieren:

%Vor%

Ich frage mich, ob dies der richtige / einzige Ansatz ist.

    
Vlad 15.01.2013, 21:33
quelle

1 Antwort

4

Eine Möglichkeit besteht darin, ein TApplicationEvents -Objekt in Ihrer Komponente zu erstellen und dann mit dem OnMessage -Ereignis nach Nachrichten aus der Nachrichtenwarteschlange des Haupt-Threads zu suchen, z. B. Tastenanschläge, bevor der Rest der VCL sie verarbeitet .

    
Remy Lebeau 16.01.2013, 01:42
quelle

Tags und Links