Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi ONEnter -nur bei TAB? (https://www.delphipraxis.net/212904-onenter-nur-bei-tab.html)

d.adams 21. Apr 2023 16:40

ONEnter -nur bei TAB?
 
Hallo,

vielleicht kann mir einer etwas erklären und helfen mein Problem zu lösen.

Ich möchte den Namen von Komponenten auswerten - bspw. TDBEdit-Felder. Testweise habe ich im ONENTER und ONEXIT Ereignis folgenden Code eingefügt:

Code:
showmessage('ENTER/EXIT: '+ActiveControl.Name)
In ActiveControl.Name steht auch der Name der Komponente wenn ich mit TAB in das Feld springe, nicht aber wenn ich mit der Maus reinklicke...

Wie bekomme ich den Namen der Komponente für beide Möglichkeiten in das Feld zu gelangen?

himitsu 21. Apr 2023 17:36

AW: ONEnter -nur bei TAB?
 
Nicht ActiveControl, sondern den Sender benutzen? :roll:
ActiveControl kann/wird beim Exit bereits das neue aktive Control sein.
Delphi-Quellcode:
ShowMessage('ENTER/EXIT: ' + (Sender as TControl).Name);


Wenn es beim OnExit funktioniert und der Fokus zu Keinem anderen Control geht, also NIL wird, dann viel Spaß, mit ActiveControl. :twisted:

d.adams 21. Apr 2023 18:39

AW: ONEnter -nur bei TAB?
 
Zitat:

Zitat von himitsu (Beitrag 1521368)
Nicht ActiveControl, sondern den Sender benutzen? :roll:
ActiveControl kann/wird beim Exit bereits das neue aktive Control sein.
Delphi-Quellcode:
ShowMessage('ENTER/EXIT: ' + (Sender as TControl).Name);


Wenn es beim OnExit funktioniert und der Fokus zu Keinem anderen Control geht, also NIL wird, dann viel Spaß, mit ActiveControl. :twisted:

Danke, damit komme ich klar. Ich frage mich allerdings, warum das "ActiveControl" nicht greift wenn ich mit der Mau in ein Feld klicke..

jaenicke 21. Apr 2023 19:18

AW: ONEnter -nur bei TAB?
 
Dafür kannst du einen Datenhaltepunkt auf ActiveControl setzen und schauen, wo das wann geändert wird, wenn du klickst oder Tab drückst.

Aliquis 21. Apr 2023 19:26

AW: ONEnter -nur bei TAB?
 
Hallo, kann es sein, dass du mit Tab in das Feld wechselst - Meldung erscheint - und dann mit der Maus in das Feld klickst? Dann erscheint natürlich keine Meldung, weil das Feld ja schom den Fokus hat und OnEnter nicht aktiv wird. Nur eine Vermutung...

peterbelow 22. Apr 2023 14:33

AW: ONEnter -nur bei TAB?
 
Zitat:

Zitat von d.adams (Beitrag 1521364)
Hallo,

vielleicht kann mir einer etwas erklären und helfen mein Problem zu lösen.

Ich möchte den Namen von Komponenten auswerten - bspw. TDBEdit-Felder. Testweise habe ich im ONENTER und ONEXIT Ereignis folgenden Code eingefügt:

Code:
showmessage('ENTER/EXIT: '+ActiveControl.Name)
In ActiveControl.Name steht auch der Name der Komponente wenn ich mit TAB in das Feld springe, nicht aber wenn ich mit der Maus reinklicke...

Wie bekomme ich den Namen der Komponente für beide Möglichkeiten in das Feld zu gelangen?

In einem Event, der durch einen Fokuswechsel ausgelöst wird oder zumindest damit im Zusammenhang steht einen Dialog anzuzeigen ist eine extrem schlechte Idee, denn das führt ja direkt zu einem weiteren Fokuswechsel und bringt damit alles durcheinander.

Um aus einem Event zu loggen schreib besser in eine Datei oder benutze OutputDebugString (landet im IDE Event log unten) oder zeig den Text in einem Control an.

himitsu 22. Apr 2023 16:51

AW: ONEnter -nur bei TAB?
 
Gut, der Name wird noch vor dem neuen Fokuswechel ausgelesen.

Man könnte aber auch einfach einen Haltepunkt setzen und es im Debugger auslesen.
ABER zum Debugger und zurück wechselt ebenfalls den Fokus. Zwar nicht ActiveControl innerhalb der VCL (Form/Komonente), aber aus der Form/Application raus.


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