AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Fenster ausblenden und Fokus abgeben / verlieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fenster ausblenden und Fokus abgeben / verlieren

Ein Thema von Schwedenbitter · begonnen am 22. Jul 2011 · letzter Beitrag vom 22. Jul 2011
Antwort Antwort
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#1

Fenster ausblenden und Fokus abgeben / verlieren

  Alt 22. Jul 2011, 12:20
Hallo,

ich habe in einer Applikation ein Fenster, dass nach der Eingabe von Informationen ausgeblendet wird. Dies mache ich über einen TTimer mittels AlphaBlendValue .
Jetzt ist mein Problem, dass das Fenster solange den Fokus behält, bis ich nach Erreichen von AlphaBlendValue = 0 dieses mit Hide; gänzlich verstecke. Wenn der/die Benutzer weitere Eingaben machen, beziehen diese sich aber auf das Fenster und werden in mein TMemo eingetragen. Das ist gelinde ausgedrückt ungünstig.

Ich möchte daher den Fokus an die Anwendung abgeben, die ihn vor dem Aufrug meines Fensters hatte - notfalls ein irgend eine Anwendung.

Wie mache ich das?

Suche mit "Fokus abgeben", "Fokus verlieren" hat mich nicht weiter gebracht.

Gruß, Alex
Alex Winzer
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Fenster ausblenden und Fokus abgeben / verlieren

  Alt 22. Jul 2011, 13:09
Ich nutze die gleiche Verfahrensweise und habe damit eigentlich kein Problem.
Das ausfaden geschieht nach einem OK-Button-Klick in ca. 1 Sekunde. Dass der Focus erst danach wechselt, stellt kein Problem dar.

Anders herum kann der User auch ein anderes Formular anklicken, wodurch das betreffene Formular deaktiviert wird und dadurch das ausfaden gestartet wird.
Dann hat das neue Formular bereits den Fokus, was der User in dem Fall auch erwartet.

Wie man das Eingabeformular vorzeitig "deaktiviert" kann ich jetzt nicht sagen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Fenster ausblenden und Fokus abgeben / verlieren

  Alt 22. Jul 2011, 13:22
Fokus abgeben:

Man gibt etwas Anderem den Fokus (über {dasAndere}.SetFocus),
oder man setzt ActiveControl der Form ganz einfach auf nil (hier geht der Fokus auf die Form über, was einen Self.SetFocus entspricht).
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Fenster ausblenden und Fokus abgeben / verlieren

  Alt 22. Jul 2011, 13:25
Aber es soll das Formular aktiviert werden, das aktioviert wird, wenn das aktuelle Formular geschlossen wird (ohne dass das aktuelle Formular sofort geschlossen wird).
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#5

AW: Fenster ausblenden und Fokus abgeben / verlieren

  Alt 22. Jul 2011, 14:59
Vermutlich habe ich mich missverständlich ausgedrückt. Ich habe eine Anwendung, die mehr oder weniger im Hintergrund läuft; ein Chat um genau zu sein. Per Hotkey wird das MainForm sichtbar gemacht und das Programm erhält einen Eintrag in der Taskleiste. Der Benutzer tippt nun seine Nachricht ein und quittiert mit OK.

Jetzt wird das Fenster etwas verzögert wieder ausgefadet (<- blödes Wort) und dann inkl. Taskleisteneintrag versteckt. Während des Ausfadens ist es aber nicht vor weiteren Eingaben des Benutzers geschützt und/oder der Benutzer möchte bereits ohne weitere Klicks mit etwas anderem arbeiten. Wir haben hier ein Büro, in dem die Tastatur berufsbedingt deutlich mehr als die Maus bedient wird...

Anders herum gefragt:
Wie ermittle ich, wer den Focus hatte, bevor ihn mein Programm erhält. Dann könnte ich mir doch das merken und den wieder zurückgeben. Oder ist das zu einfach gedacht?
Alex Winzer
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#6

AW: Fenster ausblenden und Fokus abgeben / verlieren

  Alt 22. Jul 2011, 15:23
Das geht doch in die Richtung getWindow

EDIT: Oder enumWindows und du aktivierst das erste Fenster, das nicht zu deiner Anwendung gehört.
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.

Geändert von BUG (22. Jul 2011 um 15:26 Uhr)
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#7

AW: Fenster ausblenden und Fokus abgeben / verlieren

  Alt 22. Jul 2011, 16:26
Danke für Eure Tipps!

Ich bin bei der Forensuche jetzt hierauf gestoßen. Insbesondere der Hinweis von himitsu hat mir geholfen.

Ich mache es jetzt so, dass ich vor dem Öffnen meines Fensters mit GetForegroundWindow das aktuell im Fokus befindliche Fenster ermittle. Dann werfe ich einen TTimer an, mit dem ich diesen Wert aktuell halte ( <> self.Handle). Gleich zu Beginn des Ausfadens gebe ich dann den Fokus zurück, was hoffentlich mit SetForegroundWindow geht. Mein Fenster hat damit nicht mehr den Focus.
Ich hatte bloß gedacht/gehofft, es würde einfacher gehen...

Das sollte mein Problem lösen. Ich bin mal so frech und melde mich zurück, falls es nicht klappt. Im Grunde hätte ich gleich selbst drauf kommen können. Aber manchmal hat man ein Brett vor dem Kopft. Bloß gut, dass es gibt.
Alex Winzer
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:12 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