![]() |
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. |
AW: Fokus von TEdit aufheben
Setze den Focus einfach auf den EXIT-Button:
Delphi-Quellcode:
procedure TForm1.FormClick(Sender: TObject);
begin bnExit.SetFocus; end; |
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. |
AW: Fokus von TEdit aufheben
Delphi-Quellcode:
procedure TForm1.Edit1MouseLeave(Sender: TObject);
begin bnExit.SetFocus; end; |
AW: Fokus von TEdit aufheben
Zitat:
|
AW: Fokus von TEdit aufheben
Erstmal solltest du definieren was "aufheben" eigentlich heißen soll.
|
AW: Fokus von TEdit aufheben
Zitat:
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. |
AW: Fokus von TEdit aufheben
Zitat:
Zeig' einmal etwas Code von dem was Du vor hast. |
AW: Fokus von TEdit aufheben
Zitat:
Zitat:
|
AW: Fokus von TEdit aufheben
Lies doch noch einmal - oder endlich mal - #2 und #4...!
|
AW: Fokus von TEdit aufheben
Zitat:
Zitat:
|
AW: Fokus von TEdit aufheben
Klingt irgendwie nach "wasch mich, aber mach mich nicht naß".
Ich würde dir einfach das OnExit-Ereignis empfehlen, in dessen Ereignisbehandlung du reinschreibst, daß irgend eine andere Komponente den Fokus erhalten soll. Und natürlich mußt du das für jede Komponente implementieren, die du so behandelt wissen willst. Hier rumzumosern hilft dir nicht weiter und schreckt die Leute nur davon ab, dir weiterhin helfen zu wollen. |
AW: Fokus von TEdit aufheben
Zitat:
Zitat:
|
AW: Fokus von TEdit aufheben
Wenn man den Eventhandler einmal schreibt, kann man ihn ja auch im OI mehreren Controls zuweisen, so viel Arbeit ist das also gar nicht.
|
AW: Fokus von TEdit aufheben
Ich weiß zwar nicht, wo ich "rumgemosert" habe, aber für die Leute, die es so interpretiert haben: Es war nicht meine Absicht!
Zitat:
Zitat:
|
AW: Fokus von TEdit aufheben
Zitat:
|
AW: Fokus von TEdit aufheben
Sag ich doch.
|
AW: Fokus von TEdit aufheben
Sagt er doch :-)
Zitat:
Zitat:
![]() ![]() Zitat:
Wozu soll das eigentlich gut sein? Am Anfang hast du geschrieben, der Hintergrund wäre, "dass ich ähnlich wie in Windows Ordner und Dateien umbenennen in meinem Programm umbenennen möchte". Dabei ist jede Art & Weise, in der man Dateien & Ordner in Windows umbenennen kann, eben in Windows. Sogar wenn du in einer DOS-Box Dateien umbenennst, machst du das in Windows ... unter Linux gibt's vielleicht auch DOS-Boxen, aber dort nennt man die glaub ich Konsolen. Oder mit anderen Dateimanagern wie z.B. FreeCommander, da erscheint eine Input-Box zum Umbenennen. Ist aber alles Windows. Wenn ich mal spekulieren darf: Du denkst dabei an den Windwos-Explorer, in dessen Dateifenster du eine Datei anklickst, woraufhin der Explorer diesen Eintrag in den Edit-Modus versetzt? Und das möchtest du nachbauen? Was aber hat das alles mit dem Fokus irgendwelcher Komponenten zu tun? Wieso sollte man überhaupt künstlich einer Komponente den Fokus entreißen wollen? Mir erschließt sich der Sinn des Ganzen nicht. Für das Setzen des Fokus' gibt es meiner Erfahrung nach schon sinnvollen Bedarf, z.B. in einem Login-Fenster auf das Edit für den Benutzernamen. Aber für das Entfernen des Fokus'? Da fällt mir jetzt beim besten Willen keine passende Situation ein :cyclops: |
AW: Fokus von TEdit aufheben
Zitat:
Zitat:
Zitat:
Wenn ich nun nachträglich neue Komponenten auf das Formular setze, dann muss ich immer daran denken, in deren OnClick-Events den Fokus auf die Scrollbox zu setzen (so lange beim Klick nichts anderes passieren soll). Das finde ich ziemlich unelegant, weshalb ich nach einer anderen Möglichkeit gefragt habe. So etwas wie "wenn immer geklickt wird und die Mausposition nicht mit der des Edits übereinstimmt, soll der Fokus auf die Scrollbox gesetzt werden (und anschließend das OnClick-Event der angeklickten Komponente ausgeführt werden)". Mag sein, dass es bessere und elegantere Implementierungen gibt als die, die ich gewählt habe. Die Implementierung, die ich wähle, ist meistens nicht so elegant und schön (wie ich am Ende meistens feststelle ;)). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:44 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