Delphi-PRAXiS

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 Vorschaufenster ohne Fokus einblenden (https://www.delphipraxis.net/177580-vorschaufenster-ohne-fokus-einblenden.html)

OlliWW 14. Nov 2013 14:19

Vorschaufenster ohne Fokus einblenden
 
Hallo,

Ich habe in Delphi 2007 ein kleines Programm geschrieben, dass im Hintergrund läuft. Es checkt in regelmäßigen Abständen meine Emails und soll, wenn neue Emails vorhanden sind, ähnlich wie Outlook so ein kleines VorschauFenster "Sie haben neue Emails" einblenden.
Dazu habe ich eine kleine Form geschrieben mit fsStayOnTop und dieses funktioniert auch schon fast wie gewünscht.

Einziges Problem:
Wenn das Fenster erzeugt und angezeigt wird (Form.Show) verliert die Anwendung in der ich gerade tätig bin natürlich den Focus, was sehr umständlich ist, wenn man gerade zum Beispiel etwas tippt.

Gibt es einen Weg den Fokus in der aktuellen Anwendung (dessen Handle natürlich unterschiedlich ist) zu halten / direkt wieder umzuschalten?

baumina 14. Nov 2013 14:33

AW: Vorschaufenster ohne Fokus einblenden
 
Ich habe so etwas ähnliches für die Anzeige des aktuellen Anrufers gemacht und so gelöst, dass mein Formular erst gar kein Fokus erhält, so dass das aktuelle Fenster auch keinen verlieren kann:

Delphi-Quellcode:
  procedure DoShowWin;
  begin
    ShowWindow(fmShowAnrufer.handle, SW_HIDE); // falls das Fenster noch da ist erstmal weg machen
    fmShowAnrufer.Hide; // falls das Fenster noch da ist erstmal weg machen
    fmShowAnrufer.Show;
    ShowWindow(fmShowAnrufer.handle, SW_SHOWNOACTIVATE);
  end;

himitsu 14. Nov 2013 14:33

AW: Vorschaufenster ohne Fokus einblenden
 
Vermutlich:

Delphi-Quellcode:
ShowWindow(MyForm.Handle, SW_SHOWNOACTIVATE);
MyForm.Visible := True;
Das Fenster muß natürlich mit Visible=False erstellt wurden sein.

[edit]
Wenn das Fenster niemals den Fokus bekommen soll:
WS_EX_NOACTIVATE (sollte in CreateParams gesetzt werden)

OlliWW 28. Nov 2013 10:41

AW: Vorschaufenster ohne Fokus einblenden
 
Danke für die Antworten.
Dieser Code hat genau das getan was ich mir vorgestellt habe:
Delphi-Quellcode:
  Form2 := TForm2.Create(Self);
  ShowWindow(Form2.handle, SW_SHOWNOACTIVATE);
  Form2.Visible := True;


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:26 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