Delphi-PRAXiS
Seite 1 von 2  1 2      

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 Fokus von TEdit aufheben (https://www.delphipraxis.net/183969-fokus-von-tedit-aufheben.html)

Scurra 16. Feb 2015 18:15

Fokus von TEdit aufheben
 
Hallo zusammen,

ist es möglich, den Fokus einer TEdit-Komponente aufzuheben, sobald man neben das Formular oder irgendwo im Formular (außer auf die TEdit-Komponente) klickt (evtl. sollen dabei auch andere Eigenschaften wie die Sichtbarkeit verändert werden)? Ich möchte verhindern, extra für jede Komponente auf meinem Formular entsprechenden Code ins entsprechende OnClick-Event zu schreiben, da das ziemlich umständlich ist. Ich habe dazu leider nichts gefunden.

Hintergrund ist, dass ich ähnlich wie in Windows Ordner und Dateien umbenennen in meinem Programm umbenennen möchte.

hathor 16. Feb 2015 18:22

AW: Fokus von TEdit aufheben
 
Setze den Focus einfach auf den EXIT-Button:

Delphi-Quellcode:
procedure TForm1.FormClick(Sender: TObject);
begin
bnExit.SetFocus;
end;

Scurra 19. Feb 2015 16:57

AW: Fokus von TEdit aufheben
 
Sorry, es hat etwas länger gedauert.

Der Vorschlag klappt zwar, wenn ich irgendwo auf das Formular klicke, aber wenn ich auf eine Komponente, die sich auf dem Formular befindet, klicke, dann wird das OnClick-Event des Formulars nicht ausgelöst. Ich habe jetzt die am wenigsten elegante Lösung gewählt, die ich eigentlich vermeiden wollte: Ich habe einfach bei allen Komponenten, bei denen sich bei einem Klick der Fokus nicht ändert, in der Click-Prozedur den Fokus auf das Formular bzw. auf eine Scrollbox, die sich auf dem Formular befindet, gesetzt.

hathor 19. Feb 2015 18:13

AW: Fokus von TEdit aufheben
 
Delphi-Quellcode:
procedure TForm1.Edit1MouseLeave(Sender: TObject);
begin
bnExit.SetFocus;
end;

Sir Rufo 19. Feb 2015 19:29

AW: Fokus von TEdit aufheben
 
Zitat:

Zitat von hathor (Beitrag 1290660)
Delphi-Quellcode:
procedure TForm1.Edit1MouseLeave(Sender: TObject);
begin
bnExit.SetFocus;
end;

Dann sollte man aber beim Schreiben in das Edit die Maus festnageln, sonst gibt das lustige Effekte ;)

himitsu 19. Feb 2015 20:20

AW: Fokus von TEdit aufheben
 
Erstmal solltest du definieren was "aufheben" eigentlich heißen soll.
  • Fokus weg vom Edit ... irgendwo hin
    Delphi-Quellcode:
    irgendeinAnderesControl.SetFocus;
  • Fokus weg vom Edit, aber auch nicht zu einem anderem Control (hier bekommt die Form selber den Fokus)
    Delphi-Quellcode:
    {Self.}ActiveControl := nil;
  • Fokus weg vom Edit und auch gleich weg von der Form (bei nur einer Form wie Letzteres)
    Delphi-Quellcode:
    andereForm.SetFocus;
  • Fokus weg vom Edit und auch gleich weg vom ganzen Programm :stupid:

Scurra 23. Feb 2015 17:22

AW: Fokus von TEdit aufheben
 
Zitat:

Erstmal solltest du definieren was "aufheben" eigentlich heißen soll.
Es genügt, wenn der Fokus weg vom Edit ist. Genauer: In meinem Programm verwende ich das OnExit-Event und das soll ausgelöst werden. Wenn der Fokus vom Edit weg ist, dann wird das aber ausgeführt.

Inzwischen vermute ich, dass es für mein Vorhaben keine Möglichkeit zur Umsetzung gibt, denn woher soll das Edit wissen, wenn ich wo anders hinklicke? Diese Information muss ich eben in den OnClick-Events der anderen Komponenten im Formular weitergeben, was bedeutet, dass ich in jedes OnClick-Event der anderen Komponenten extra etwas schreiben muss, um es dem Edit mitzuteilen (beispielsweise den Fokus auf ein anderen Element setzen, wodruch das Edit weiß, dass es nicht mehr den Fokus hat).

Da ich nicht soo viele Elemente auf meinem Formular habe, war es nicht so viel Aufwand, das zu programmieren. Trotzdem bin ich nach wie vor daran interessiert zu wissen, ob es doch eine andere Möglichkeit gibt.

Trotzdem vielen Dank an alle Poster mit deren Anregungen.

BadenPower 23. Feb 2015 18:14

AW: Fokus von TEdit aufheben
 
Zitat:

Zitat von Scurra (Beitrag 1291162)
Zitat:

Erstmal solltest du definieren was "aufheben" eigentlich heißen soll.
Es genügt, wenn der Fokus weg vom Edit ist. Genauer: In meinem Programm verwende ich das OnExit-Event und das soll ausgelöst werden. Wenn der Fokus vom Edit weg ist, dann wird das aber ausgeführt.

Das Edit-Feld verliert doch automatisch den Focus, sobald Du auf einen Button, anderes Editfeld, Stringgrid usw.. klickst. Und dann wird auch das OnExit Deines Editfeldes aufgerufen.

Zeig' einmal etwas Code von dem was Du vor hast.

Scurra 24. Feb 2015 19:40

AW: Fokus von TEdit aufheben
 
Zitat:

Das Edit-Feld verliert doch automatisch den Focus, sobald Du auf einen Button, anderes Editfeld, Stringgrid usw.. klickst. Und dann wird auch das OnExit Deines Editfeldes aufgerufen.
Aber beispielsweise nicht, wenn ich einfach aufs Formular klicke (neben andere Komponenten). Und bei Klicks auf bestimmte Komponenten wie Panels etc. geht der Fokus auch nicht weg.

Zitat:

Zeig' einmal etwas Code von dem was Du vor hast.
Aus dem Code wird man auch nicht schlauer. Ich möchte lediglich, dass der Fokus von einem Edit verschwindet, sobald man irgendwo anders hinklickt. Da ich in meinem Formular nicht soo viele anderen Komponenten platziert habe, ist es nicht soo umständlich, aber angenommen ich platziere jetzt mehrere Panels auf meinem Formular, dann muss ich für jedes extra implementieren, dass bei einem Klick der Fokus vom Edit verschwindet. Im Idealfall sollte auch noch der Fokus vom Edit aufgehoben werden, wenn man neben das Formular klickt, aber das ist mir im Moment nicht so wichtig.

hathor 24. Feb 2015 22:33

AW: Fokus von TEdit aufheben
 
Lies doch noch einmal - oder endlich mal - #2 und #4...!


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:31 Uhr.
Seite 1 von 2  1 2      

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