![]() |
Wie Hauptfenster in Vordergrund bringen?
Hallo,
bei mir wird bei Programmstart im OnCreate Event zuweilen ein Warnungsfenster erzeugt. Wird dieses weggeklickt, so landet das Hauptfenster im Hintergrund hinter anderen Anwendungen versteckt. Wie und wo bringe ich das Hauptfenster bei Programmstart in so einem Fall automatisch in den Vordergrund? Beispielcode zur Demonstration des Effektes:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin With Application do begin NormalizeTopMosts; MessageBox('Hello', 'IMPORTANT NOTICE!', MB_OKCANCEL); RestoreTopMosts; end; end; end. |
AW: Wie Hauptfenster in Vordergrund bringen?
Hallo,
Die MessageBox könntest du in der Projektdatei anzeigen.
Delphi-Quellcode:
...
Application.Initialize; Application.MessageBox('Hello', 'IMPORTANT NOTICE!', MB_OKCANCEL); Application.CreateForm(TForm1, Form1); Application.Run; ... |
AW: Wie Hauptfenster in Vordergrund bringen?
Zitat:
Gibt es da keine andere Möglichkeit? Warum geht denn das Hauptfenster überhaupt in den Hintergrund? |
AW: Wie Hauptfenster in Vordergrund bringen?
Was spricht denn dagegen?
Du kannst die Initialisierung doch auch von der MainForm trennen.
Delphi-Quellcode:
...
Application.Initialize; if not MeineInitialisierung then begin Application.MessageBox('Hello', 'IMPORTANT NOTICE!', MB_OKCANCEL); Halt; end; Application.CreateForm(TForm1, Form1); Application.Run; ... |
AW: Wie Hauptfenster in Vordergrund bringen?
Hilft Dir das?
Delphi-Quellcode:
procedure TForm1.FormActivate(Sender: TObject);
begin If not FAllreadyActivated then begin FAllreadyActivated := true; MessageBox(handle,'Hello', 'IMPORTANT NOTICE!', MB_OKCANCEL); end; end; |
AW: Wie Hauptfenster in Vordergrund bringen?
so geht es auch...
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin formstyle:=fsstayontop; With Application do begin NormalizeTopMosts; MessageBox('Hello', 'IMPORTANT NOTICE!', MB_OKCANCEL); RestoreTopMosts; end; end; |
AW: Wie Hauptfenster in Vordergrund bringen?
Zitat:
Wenn ich das Warnfenster VOR dem OnActivate oder OnShow Event erzeuge, dann kommt das Hauptfenster ohne Fokus hoch. Das lässt sich auch im OnShow nicht reparieren. Nach Wegklicken der Warnung geht der Fokus auf das ursprünglich aufrufende Programm über (IDE oder File Browser). Zitat:
Ich wollte zwar keinen größeren Programmumbau machen, weil mein Programm riesig ist, aber falls keiner eine einfache Lösung für dieses Problem hat, dann muss ich wohl. |
AW: Wie Hauptfenster in Vordergrund bringen?
versuch es mal so...
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin With Application do begin NormalizeTopMosts; MessageBox('Hello', 'IMPORTANT NOTICE!', MB_OKCANCEL); RestoreTopMosts; end; windows.SetForegroundWindow(handle); end; |
AW: Wie Hauptfenster in Vordergrund bringen?
Eine Idee hätte ich auch noch (ungetestet):
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin With Application do begin NormalizeTopMosts; MessageBox('Hello', 'IMPORTANT NOTICE!', MB_OKCANCEL); RestoreTopMosts; end; PostMessage(handle,WM_ACTIVATE,WA_CLICKACTIVE,0); end; |
AW: Wie Hauptfenster in Vordergrund bringen?
@DeddyH
deine Lösung geht auch nicht. setforegroundwindow sagt ja schon genau das, was gewünscht wird. manchmal sind die Lösungen recht trivial... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:53 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