Hallo,
ich hab ein TrayIcon das ein OnClick hat.
Klick ich auf das TrayIcon und die Form1 (mainform) ist schon Visible wird folgende Procedure aufgerufen:
Code:
procedure TTrayIcon.HideMainForm;
begin
//Verstecken des Taskbar-Icon der Application (nicht das Traybar-Icon)
ShowWindow(Application.Handle, SW_HIDE);
//Verstecken der Form
ShowWindow(Application.MainForm.Handle, SW_HIDE);
//Verstecken der Form
Application.MainForm.Hide;
end;
Wenn sie nicht sichtbar ist, wird diese Procedure aufgerufen:
Code:
procedure TTrayIcon.ShowMainForm;
var
I: Integer;
begin
// Anzeigen des Taskbar-Icon der Application (nicht das Traybar-Icon)
ShowWindow(Application.Handle, SW_RESTORE);
//Haupt-Form anzeigen
Application.MainForm.Show;
//Haupt-Form in den Vordergrund bringen
Application.MainForm.BringToFront;
if ShowFirst then // Dieser Teil wird nur einmal durchgeführt
begin
for I := 0 to Application.MainForm.ComponentCount - 1 do
If Application.MainForm.Components[I] is TWinControl then
with Application.MainForm.Components[I] as TWinControl do
If Visible then
begin
ShowWindow(
Handle, SW_SHOWDEFAULT);
end;
ShowFirst := False; // Die Main-Form wurde jetzt angezeigt
end;
Application.BringToFront;
end;
Das funktioniert auch wunderbar!
Wenn aber jetzt eine Meldung (MessageDlg) ansteht und ich klicke auf das TrayIcon wird die Form1 (Mainform) versteckt, aber die Message ist noch sichtbar.
Click ich wieder auf das TrayIcon wird die Form1 (MainForm) wieder angezeigt, aber
vor der Message, jetzt muss man erst wieder die Form1 minimieren, damit man an die Meldung kommt.
Wie kann ich die Form mit samt aller momentanen Messages/Forms so minimieren und wieder anzeigen, dass sie, wie zuvor auch, hintereinander angezeigt werden (also aufgerufene Messages oder Forms vor die Mainform)?