![]() |
Problem mit MainForm.Hide und Message
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:
Wenn sie nicht sichtbar ist, wird diese Procedure aufgerufen:
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;
Code:
Das funktioniert auch wunderbar!
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; 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)? |
Re: Problem mit MainForm.Hide und Message
Ist MessageDLG denn nicht Modal? Das dürfte doch eigentlich
garnicht funktionieren oder? |
Re: Problem mit MainForm.Hide und Message
Hätte ich nu auch gesagt aber vielleicht gibts da ja n paar fiese API tricks ^^
notfalls von dem dingen n handel raus suchen und auch verstecken! Das die form VOR der message aufpopt liegt an deinem
Delphi-Quellcode:
Greetz Boombuler
Application.BringToFront;
|
Re: Problem mit MainForm.Hide und Message
und wie kann ich es so hinbekommen, dass beim aufpopen (was für ein schlampiges Wort :zwinker:) die Message, die vor dem Verstecken zuvor noch aktiv war wieder aktiv und in den Vordergrund kommt?
Ich dachte auch dass das durch ShowModal geregelt ist |
Re: Problem mit MainForm.Hide und Message
Zitat:
Wenn ich das ausblende bleibt das problem |
Re: Problem mit MainForm.Hide und Message
Wieso führste eigentlich beim Verstecken 2x die selbe Procedure auf?
Zitat:
ergo: Entweder du arbeitest NUR mit Form.Hide oder du rufst 2x ShowWindow(h,SW_HIDE) auf, wobei h einmal das Form.Handle und einmal das Application.Handle sein muss. Das Durcheinander mit der Windows und Forms uses ist nicht gerade empfehlenswert (s. auch deine ShowMainForm proc)! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:46 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 by Thomas Breitkreuz