AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Ich krieg mein Fenster nicht automatisch aktiv.

Ich krieg mein Fenster nicht automatisch aktiv.

Ein Thema von t2000 · begonnen am 25. Feb 2021 · letzter Beitrag vom 25. Feb 2021
Antwort Antwort
Benutzerbild von t2000
t2000

Registriert seit: 15. Dez 2005
Ort: NRW
248 Beiträge
 
Delphi 12 Athens
 
#1

AW: Ich krieg mein Fenster nicht automatisch aktiv.

  Alt 25. Feb 2021, 17:07
@himitsu
Gesucht ja, aber nicht viel gefunden. Die Lösungen aus 2007 funktionieren nicht "ForceForegroudWindow"

@Der schöne Günther
Ja, auch wenn ich es extern starte.

@mytbo
Nein, so nicht. Es geht nicht um den Splashscreen. Den kann man komplett weg lassen. Ich erzeugt ein Form (frmDesktop) und von dort aus ein weiteres Form frmMain. Ich zeige dies und es ist nicht aktiv.

Ich dachte, wenn ich aus einer Anwendung/Form eine neue Form erzeuge und öffne/zeige, dann sollte diese auch aktiv sein. Ist ja nicht so,das ich im Hintergrund etwas mache. Bzw. machen will
Thomas
(Wir suchen eine(n) Entwickler(in) mit Ambitionen später ggf. die Softwarefirma zu leiten)
Aktuell nicht mehr. Aber ab vielleicht 2024/2025 wird das wieder sehr interessant!
  Mit Zitat antworten Zitat
Benutzerbild von t2000
t2000

Registriert seit: 15. Dez 2005
Ort: NRW
248 Beiträge
 
Delphi 12 Athens
 
#2

AW: Ich krieg mein Fenster nicht automatisch aktiv.

  Alt 25. Feb 2021, 17:11
Sollte dies alleine nicht reichen, um ein Formular zu erzeugen, zu zeigen und dort aktiv zu sein? Also auch den Eingabefokus zu erhalten?

Delphi-Quellcode:
// ich bin in einer beliebigen Form und mache von dort:
    FfrmMain := TfrmMain.Create( self);
    FfrmMain.Show;
Thomas
(Wir suchen eine(n) Entwickler(in) mit Ambitionen später ggf. die Softwarefirma zu leiten)
Aktuell nicht mehr. Aber ab vielleicht 2024/2025 wird das wieder sehr interessant!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Ich krieg mein Fenster nicht automatisch aktiv.

  Alt 25. Feb 2021, 17:23
Ist ja nicht so,das ich im Hintergrund etwas mache. Bzw. machen will
Dein Programm ist/war ja im Hintergrund (hatte keinen Eingabefokus) und daher verweigert Windows ihm sich selbstständig den Vordergrund zu setzen.

Wenn man ein Programm neu startet, dann war der Andere (Desktop/Explorer/Startmenü/...) vorher altiv und somit kann ein neues Programm auch sofort aktiv werden. (ist eine der Bedingungen, wie sie im SetForegroundWindow aufgzählt werden)


Ich weiß auch grade nicht wo, aber es wurden auch schonmal irgendwelche "Tricks" genannt, welche womöglich noch funktionieren.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von t2000
t2000

Registriert seit: 15. Dez 2005
Ort: NRW
248 Beiträge
 
Delphi 12 Athens
 
#4

AW: Ich krieg mein Fenster nicht automatisch aktiv.

  Alt 25. Feb 2021, 17:36
Warum ist/war mein Programm im Hintergrund?

Ich glaube, ich verstehe hier etws nicht.
Auch die Win-Doku sagt doch:
Zitat:
Remarks

The system restricts which processes can set the foreground window. A process can set the foreground window only if one of the following conditions is true:

The process is the foreground process.
The process was started by the foreground process.
- Explorer aktiv
- ich starte mein Programm
- Mein Programm aktiv mit Main-Fenster
- Ich erzeuge/öffne ein neues Fenster

Warum sollte dieses neue Fenster nicht aktiv sein?
Wo hab ich den Denkfehler?
Thomas
(Wir suchen eine(n) Entwickler(in) mit Ambitionen später ggf. die Softwarefirma zu leiten)
Aktuell nicht mehr. Aber ab vielleicht 2024/2025 wird das wieder sehr interessant!
  Mit Zitat antworten Zitat
mytbo

Registriert seit: 8. Jan 2007
482 Beiträge
 
#5

AW: Ich krieg mein Fenster nicht automatisch aktiv.

  Alt 25. Feb 2021, 17:50
- Explorer aktiv
- ich starte mein Programm
- Mein Programm aktiv mit Main-Fenster
- Ich erzeuge/öffne ein neues Fenster

Warum sollte dieses neue Fenster nicht aktiv sein?
Wo hab ich den Denkfehler?
Also hiermit ist ClientForm bei mir aktiv:
Delphi-Quellcode:
procedure TfrmMain.FormShow(Sender: TObject);
begin
  PostMessage(Handle, WM_SETUPAPPLICATION, 0, 0);
end;

procedure TfrmMain.WMSetupApplication(var pmvMessage: TMessage);
begin
  FClientForm := TfrmClient.Create(Self);
  FClientForm.Show;
end;
Bis bald...
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von t2000
t2000

Registriert seit: 15. Dez 2005
Ort: NRW
248 Beiträge
 
Delphi 12 Athens
 
#6

AW: Ich krieg mein Fenster nicht automatisch aktiv.

  Alt 25. Feb 2021, 18:22
Also hiermit ist ClientForm bei mir aktiv:
Delphi-Quellcode:
procedure TfrmMain.FormShow(Sender: TObject);
begin
  PostMessage(Handle, WM_SETUPAPPLICATION, 0, 0);
end;

procedure TfrmMain.WMSetupApplication(var pmvMessage: TMessage);
begin
  FClientForm := TfrmClient.Create(Self);
  FClientForm.Show;
end;
Bis bald...
Thomas
Das ist nicht in Ordnung, weil FormShow sehr früh aufgerufen wird. Bevor das Fenster sichtbar ist.
Ich starte
Splash kommt
Desktop-Form kommt
... jetzt laufen die ganzen Inits .. das dauert ein wenig ...
MainForm wird gezeigt (also die zweite Form)
und der Splash verschwindet.

Am Bildschirm ist jetzrt die DesktopForm (die erste Form, Delphi-MainForm) sichtbar, aber im Hintergrund
Im Fordergrund ist die zweite Form, meine persönliche MainForm
Leider nicht aktiv, was zu optischen Unschönheiten führt, die ich gerne beseitigen möchte.
Ich könnte (siehe erstes Posting) an der Stelle, an der ich den Splash schließe ein Postmessage machen. Aber da vermute ich keinerlei Änderung. Was ist "WM_SETUPAPPLICATION". Ich finde nichts im Internet darüber.
Thomas
(Wir suchen eine(n) Entwickler(in) mit Ambitionen später ggf. die Softwarefirma zu leiten)
Aktuell nicht mehr. Aber ab vielleicht 2024/2025 wird das wieder sehr interessant!
  Mit Zitat antworten Zitat
Benutzerbild von t2000
t2000

Registriert seit: 15. Dez 2005
Ort: NRW
248 Beiträge
 
Delphi 12 Athens
 
#7

AW: Ich krieg mein Fenster nicht automatisch aktiv.

  Alt 25. Feb 2021, 18:43
Der Focus wird mir geklaut.

In einem Testprogramm warte ich über einen Timer etwas. Also so das ALLE Dinge abgeschlossen sind. Dann geht es.

Ich muss also eine Lösung finden, das wirklich ALLE create/show/activate vom "frmDesktop" (Delphi-MainForm) abgeschlossen ist.
ERST DANN darf ich das neue Fenster erzeugen.

Wahrscheinlich ein erneutes "OnIdle" programmieren.
Thomas
(Wir suchen eine(n) Entwickler(in) mit Ambitionen später ggf. die Softwarefirma zu leiten)
Aktuell nicht mehr. Aber ab vielleicht 2024/2025 wird das wieder sehr interessant!
  Mit Zitat antworten Zitat
Benutzerbild von t2000
t2000

Registriert seit: 15. Dez 2005
Ort: NRW
248 Beiträge
 
Delphi 12 Athens
 
#8

AW: Ich krieg mein Fenster nicht automatisch aktiv.

  Alt 25. Feb 2021, 19:01
Gelöst!

Es hat nichts mit WinAPI Sperre oder ähnlichem zu tun.

Wenn ich mittels Timer eine Sekunde nach dem frmMain.Show warte, dann funktioniert alles.

Es könnte schon mit dem Splash zusammenhängen. Schließe ich den Splash zur falschen Zeit, bekomme ich das Fenster nicht aktiv. Die falsche Zeit ist genau in dem Moment, zwischen dem Focuswechsel von Form 1 zu Form 2.
Ohne das jetzt im Detail zu testen. Mit dem Timer geht alles.
Thomas
(Wir suchen eine(n) Entwickler(in) mit Ambitionen später ggf. die Softwarefirma zu leiten)
Aktuell nicht mehr. Aber ab vielleicht 2024/2025 wird das wieder sehr interessant!
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 15:48 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