Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TEdit Componente über Tag finden (https://www.delphipraxis.net/195299-tedit-componente-ueber-tag-finden.html)

bayou 18. Feb 2018 09:57

Delphi-Version: 6

TEdit Componente über Tag finden
 
Hallo,

ich habe Formular 1 mit 10 Edit Feldern und Formular 2 mit einem Button.
Wenn ich auf den Button in Formular 2 gehe möchte ich herausfinden welches Editfeld in Formular 1 den Focus hat.
Da ich nicht über den Namen von TEdit (for i 1 to usw.) gehen möchte würde ich das gerne über TComponent.Tag versuchen.
Leider habe ich keine Idee wie ich es umsetzen muss und suche mir im Moment nen Wolf.

Kann mir bitte jemand einen Tipp geben.

Vielen Dank

haentschman 18. Feb 2018 10:09

AW: TEdit Componente über Tag finden
 
Moin...8-)
Zitat:

Wenn ich auf den Button in Formular 2 gehe
...heißt das das du den Button gedrückt hast und im Click Handler wissen willst wo der "Wert" hin soll? :gruebel:

blawen 18. Feb 2018 10:15

AW: TEdit Componente über Tag finden
 
Zitat:

Zitat von haentschman (Beitrag 1394101)
Moin...8-)
Zitat:

Wenn ich auf den Button in Formular 2 gehe
...heißt das das du den Button gedrückt hast und im Click Handler wissen willst wo der "Wert" hin soll? :gruebel:

Spontan würde mir einfallen, zu schauen, wer woher den Focus besessen hat.

bayou 18. Feb 2018 10:16

AW: TEdit Componente über Tag finden
 
@haentschman
Ja genau.
Damit ich später dort was rein schreiben kann.

@blawen
OK, und wie machee ich das?

Vielen Dank

PS: später habe ich in Formular 2 ein Edit-Feld aus dem ich den Wert in das Formular 1 in einen der 10 Edit-Felder übertragen möchte.

Dennis07 18. Feb 2018 23:02

AW: TEdit Componente über Tag finden
 
Also verstehe ich das richtig:

Form1 {
Edit1, Edit2, Edit3, Edit4, Edit5,
Edit6, Edit7, Edit8, Edit9, Edit10: TEdit;
}

Form2 {
Button1: TButton;
}

Und jetzt soll beim Klicken von Button1 auf Form2 herausgefunden werden, welches TEdit auf Form1 den Fokus hat?
Falls ja, dann kannst du das derzeit fokussierte Control auf Form1 mit Form1.ActiveControl herausbekommen. Um zu prüfen, ob es ein Button ist, benutze den "is"-Operator (nur notwendig, falls du noch andere Kontrols außer Edit-Felder auf Form1 hast). Zum anschließenden Konvertieren den "as"-Operator.
Dein OnClick-Ereignis des Form1.Button1 könnte also wie folgt aussehen (vergiss nicht, die Unit des Form1 in die des Form2 einzubinden!):

Delphi-Quellcode:
procedure Form2.Button1Click(Sender: TObject);
var
  SelectedEditField: TEdit;
begin
  //if Form1.ActiveControl is TEdit then <- nur Notwendig, falls nicht-Edit-Controls vorhanden
  SelectedEditField := (Form1.ActiveControl as TEdit);
end;

bayou 19. Feb 2018 09:56

AW: TEdit Componente über Tag finden
 
Super.
1000 Dank.
Das war es was mir gefehlt hat.
Leider komme ich eher sehr selten dazu etwas mit Delphi zu arbeiten.

Nochmals Danke.

himitsu 19. Feb 2018 10:24

AW: TEdit Componente über Tag finden
 
Aber nicht über Screen.ActiveControl ... die andere Form hat den Folus und wenn man einen "normalen" Button (nicht ToolButton/SpeedButton) drückt, bekommt der auch noch den Fokus.

Und bei MDI-Childs und eingebetteten Forms ist Form.ActiveControl immer NIL ... denn dort liegt der Fokus bei der obersten Parent-Form, also (Form.Parent{.Parent...} as TForm).ActiveControl

bayou 19. Feb 2018 10:37

AW: TEdit Componente über Tag finden
 
Es funktioniert wie ich es mir wünsche.
Also alles gut :-D


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