![]() |
Delphi-Version: 2006
FormKeyDown ActiveControl.name ist immer leer
Hallo,
ich habe eine Form mit einigen TcxTabSheets auf denen sich etliche tcxTextEdit Felder befinden. Form1 ist das einzige und das Main Form. Per HotKey z.B. F2 soll "Mach etwas im fokussierten Edit Feld" gestartet werden.
Delphi-Quellcode:
Wenn man den Cursor in ein Editfeld plaziert und F2 drückt, ist das Ergebnis aber "FORM1 - () - []"
procedure TFORM1.FormKeyDown( Sender: TObject; var Key: Word; Shift: TShiftState );
begin if key = vk_F2 then begin ShowMessage( ( sender as tcomponent ).name + ' - ' + '(' + form1.ActiveControl.Name + ')' + ' - ' + '[' + screen.ActiveControl.Name + ']'); end; end; :( Gibts ne andere Lösung um an das fokussierte Feld zu kommen:?: |
AW: FormKeyDown ActiveControl.name ist immer leer
MDI: Da ist das immer nur in der äußersten Form zu finden.
Ansonsten sollte es eigentlich funktionieren. Bei FMX gibt/gab es da aber mal ein Problemchen. ABER, da es bei dir ein Leerstring ist und nicht knallt (Zugriffsverletzung bei Adresse 0), wird die Komponente einfach keinen Namen haben. :zwinker: z.B. bei DevExpress und Grids, wo der Fokus nicht im Control, sondern in einem (meist/oft) namenlosen InnerControl liegt.
Delphi-Quellcode:
ActiveControl.Parent.Name
Delphi-Quellcode:
if key = vk_F2 then begin
ShowMessage( (Sender as TComponent).ClassName + ' ' + (Sender as TComponent).Name + ' - ' + '(' + {FORM1}Self.ActiveControl.ClassName + ' ' + {FORM1}Self.ActiveControl.Name + ')' + ' - ' + '[' + Screen.ActiveControl.ClassName + ' ' + Screen.ActiveControl.Name + ']'); end; |
AW: FormKeyDown ActiveControl.name ist immer leer
:thumb: Vielen Dank,
genau das war das Problem, so klappts wie erwartet.
Delphi-Quellcode:
Das Ergebnis ist jetzt "FORM1 - (EDIT1) - [EDIT1]"
procedure TFORM1.FormKeyDown( Sender: TObject; var Key: Word; Shift: TShiftState );
begin if key = vk_F2 then begin ShowMessage( ( sender as tcomponent ).name + ' - ' + '(' + form1.ActiveControl.Parent.Name + ')' + ' - ' + '[' + screen.ActiveControl.Parent.Name + ']'); end; end; |
AW: FormKeyDown ActiveControl.name ist immer leer
Wenn du keine gekapselten Controls hast, klappt das so nicht.
Am Einfachsten den Namen auslesen und wenn leer, dann in ner Schleife zum nächsten Parent gehten usw. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz