Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi [VCL] Taste nur verarbeiten wenn kein Edit fokussiert (https://www.delphipraxis.net/193458-%5Bvcl%5D-taste-nur-verarbeiten-wenn-kein-edit-fokussiert.html)

Medium 2. Aug 2017 15:29

[VCL] Taste nur verarbeiten wenn kein Edit fokussiert
 
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 :stupid:

Uwe Raabe 2. Aug 2017 15:32

AW: [VCL] Taste nur verarbeiten wenn kein Edit fokussiert
 
Eventuell führt dies in die richtige Richtung:

Delphi-Quellcode:
if (Screen.ActiveControl is TCustomEdit) then Exit;

Medium 2. Aug 2017 15:37

AW: [VCL] Taste nur verarbeiten wenn kein Edit fokussiert
 
Isch werd bekloppt. Nette Idee, und deckt sogar auch alle SpinEdits und AdvEdits ab! Danke dir!


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:00 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