AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fokus von TEdit aufheben

Ein Thema von Scurra · begonnen am 16. Feb 2015 · letzter Beitrag vom 25. Feb 2015
Antwort Antwort
Seite 2 von 2     12   
Scurra

Registriert seit: 19. Jan 2015
81 Beiträge
 
Delphi 10.3 Rio
 
#11

AW: Fokus von TEdit aufheben

  Alt 25. Feb 2015, 07:13
Lies doch noch einmal - oder endlich mal - #2 und #4...!
Wie man den fokus aufheben kann ist mir klar und das war nicht meine Frage:
Zitat:
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.
Falls es im ersten Beitrag noch nicht klar wurde, dachte ich, dass es zumindest durch meine anderen Antworten deutlich wurde.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#12

AW: Fokus von TEdit aufheben

  Alt 25. Feb 2015, 07:54
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.
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#13

AW: Fokus von TEdit aufheben

  Alt 25. Feb 2015, 09:16
Hier rumzumosern hilft dir nicht weiter und schreckt die Leute nur davon ab, dir weiterhin helfen zu wollen.
Vor allem, wenn man solche "präzise" Aussagen hat:

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.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#14

AW: Fokus von TEdit aufheben

  Alt 25. Feb 2015, 09:17
Wenn man den Eventhandler einmal schreibt, kann man ihn ja auch im OI mehreren Controls zuweisen, so viel Arbeit ist das also gar nicht.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Scurra

Registriert seit: 19. Jan 2015
81 Beiträge
 
Delphi 10.3 Rio
 
#15

AW: Fokus von TEdit aufheben

  Alt 25. Feb 2015, 18:39
Ich weiß zwar nicht, wo ich "rumgemosert" habe, aber für die Leute, die es so interpretiert haben: Es war nicht meine Absicht!

Zitat:
Ich würde dir einfach das OnExit-Ereignis empfehlen, in dessen Ereignisbehandlung du reinschreibst, daß irgend eine andere Komponente den Fokus erhalten soll.
Erhält nicht schon eine andere Komponente den Fokus, wenn das OnExit-Ereignis ausgelöst wird? Oder verstehe ich dich falsch?

Zitat:
Und natürlich mußt du das für jede Komponente implementieren, die du so behandelt wissen willst.
Danke. Das ist die Antwort auf meine Frage.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.088 Beiträge
 
Delphi 12 Athens
 
#16

AW: Fokus von TEdit aufheben

  Alt 25. Feb 2015, 19:00
Zitat:
Und natürlich mußt du das für jede Komponente implementieren, die du so behandelt wissen willst.
Danke. Das ist die Antwort auf meine Frage.
Was aber nicht bedeudet, daß man überall eigene Ereignis-Methoden dran machen muß. (eine Gemeinsame reicht auch)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#17

AW: Fokus von TEdit aufheben

  Alt 25. Feb 2015, 19:04
Sag ich doch.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#18

AW: Fokus von TEdit aufheben

  Alt 25. Feb 2015, 19:34
Sagt er doch

Ich weiß zwar nicht, wo ich "rumgemosert" habe, aber für die Leute, die es so interpretiert haben: Es war nicht meine Absicht!
Manchmal mosern manche auch völlig unbeabsichtigt. Glaub mir, da kenn ich mich gut aus

Zitat:
Ich würde dir einfach das OnExit-Ereignis empfehlen, in dessen Ereignisbehandlung du reinschreibst, daß irgend eine andere Komponente den Fokus erhalten soll.
Erhält nicht schon eine andere Komponente den Fokus, wenn das OnExit-Ereignis ausgelöst wird? Oder verstehe ich dich falsch?
Dann hast du ja jetzt doch was bemerkt: Der Fokus ist weg, sobald man die Komponente verläßt. Was du möchtest, ist ein Zustand, bei dem keine Komponente den Fokus hat. Das hath hathor oben schon beschrieben.

Zitat:
Und natürlich mußt du das für jede Komponente implementieren, die du so behandelt wissen willst.
Danke. Das ist die Antwort auf meine Frage.
Wobei du natürlich wieder Code und Tipperei einsparen kannst, wenn bei jedem Exit-Ereignis dasselbe gemacht werden soll, wie meine Vorposter bereits ausführten.

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
  Mit Zitat antworten Zitat
Scurra

Registriert seit: 19. Jan 2015
81 Beiträge
 
Delphi 10.3 Rio
 
#19

AW: Fokus von TEdit aufheben

  Alt 25. Feb 2015, 20:47
Zitat:
Manchmal mosern manche auch völlig unbeabsichtigt. Glaub mir, da kenn ich mich gut aus
Gut zu wissen. Na hoffentlich passiert es mir nicht (mehr) Ich möchte nämlich nicht bei Leuten rummosern, von denen ich hoffe, dass sie mir helfen

Zitat:
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?
Ja, das ist richtig. Das Programm hat aber eigentlich keinen praktischen Nutzen, denn sonst könnte ich ja gleich den Windows-Explorer verwenden. Es ist für mich einfach nur eine Übung, da ich noch ein Anfänger bin, was Delphi (und andere Programmiersprachen ) betrifft.

Zitat:
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?
Ich kann meinen Windows-Explorer-Nachbau dazu verwenden, um einen Ordner zu wählen. Aus dem gewählten Verzeichnis werden mir alle .jgp bzw. .jpeg Dateien in einer Miniaturansicht angezeigt. Dazu habe ich mir eine eigene Klasse geschrieben, die auf der TPanel-Klasse basiert. Auf dem Panel platziere ich eine TImage-Komponente (um die Miniaturansicht des Bildes zu erzeugen) sowie ein Label für den Datei-Namen und ein Edit um den Datei-Namen zu ändern. Wenn nun eine Datei selektiert wurde (ähnlich wie bei Windows) und ich noch einmal auf das Label klicke, dann wird das Label unsichtbar, das Edit wird sichbar und das Edit erhält den Fokus. Wenn ich in Windows einen Dateinamen ändere, dann verschwindet das Editier-Feld wieder, sobald ich mit der Maus irgendwo anders hinklicke (meiner bisherigen Beobachtung ist es völlig egal, wohin man klickt, so lange man nicht wieder auf das Editier-Feld selbst klickt). Und da setzt meine Implementierung an: Sobald ich irgendwo auf mein Formular oder auf eine beliebige Komponente auf dem Formular (außer dem fokusierten Edit), soll das Edit den Fokus verlieren. Im OnExit-Event wird das Edit dann wieder unsichtbar und das Label erscheint mit dem neuen Namen. Da sich bei mir die Panels, die die Miniaturansicht gewährleisten, in einer Scrollbox befinden, gebe ich ganz einfach den Fokus an die Scrollbox ab.

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 ).
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:11 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