Einzelnen Beitrag anzeigen

Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#1

[VCL] Taste nur verarbeiten wenn kein Edit fokussiert

  Alt 2. Aug 2017, 16:29
Huhu DP!

Ich habe einen kleinen grafischen Editor gebaut, der komplett in einer Paintbox dargestellt wird (alles selbst auf ein Offscreen-Bitmap gezeichnet, keine Komponenten). Auf dem Formular sind auch ein paar Edit-Felder mit denen Details eines im Editor selektierten Elementes numerisch eingegeben werden. ("Selektiert" heißt hier: Intern selektiert, ich führe eine eigene Liste für Selektionen. Keine Windows API Geschichten.)

Ich verarbeite zudem im OnKeyDown des Formulars die DELETE Taste, die bei Drücken im Editor selektierte Elemente löschen soll. Leider aber kommt der Tastendruck auch an, wenn man in einem der Edits die Taste drückt um den Text darin zu löschen. Folge ist: Text von Eigenschaften eines Elementes löschen löscht gleich das ganze Element.

Ich möchte nun nicht all meine Edits und andere Controls abfragen müssen ob sie den Fokus haben oder nicht, aber wenn eines diesen hat, dies irgendwie erkennen um dann meine Selektion NICHT zu löschen.
Ich hatte gehofft, dass wenn KEIN Control auf dem Form den Fokus hat, man also nur irgendwo auf das leere Form geklickt hat, das Form selbst den Fokus hat. TForm.Focussed ist dann allerdings auch false, so dass dies kein Indikator ist.

Kurz: Wie kann ich erkennen, dass jemand eine Taste gedrückt hat, und dabei NICHT gerade dabei ist Text in einem Edit zu ändern?

Besten Dank vorab!

PS: Delphi 2007. Ich mag meine Antiquität
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat