AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit MainForm.Hide und Message

Ein Thema von Helmi · begonnen am 4. Jan 2005 · letzter Beitrag vom 26. Jul 2005
Antwort Antwort
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#1

Problem mit MainForm.Hide und Message

  Alt 4. Jan 2005, 13:57
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)?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.883 Beiträge
 
Delphi 12 Athens
 
#2

Re: Problem mit MainForm.Hide und Message

  Alt 4. Jan 2005, 14:52
Ist MessageDLG denn nicht Modal? Das dürfte doch eigentlich
garnicht funktionieren oder?
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von Boombuler
Boombuler

Registriert seit: 14. Mär 2003
Ort: Osnabrück
244 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Problem mit MainForm.Hide und Message

  Alt 4. Jan 2005, 14:54
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
Application.BringToFront; Greetz Boombuler
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Problem mit MainForm.Hide und Message

  Alt 4. Jan 2005, 14:57
und wie kann ich es so hinbekommen, dass beim aufpopen (was für ein schlampiges Wort ) 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
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Problem mit MainForm.Hide und Message

  Alt 4. Jan 2005, 15:17
Zitat von Boombuler:
Das die form VOR der message aufpopt liegt an deinem
Application.BringToFront;
Das hab ich ausprobiert - daran liegt es aber nicht.
Wenn ich das ausblende bleibt das problem
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Nogge

Registriert seit: 15. Jul 2004
336 Beiträge
 
Delphi 7 Professional
 
#6

Re: Problem mit MainForm.Hide und Message

  Alt 26. Jul 2005, 17:06
Wieso führste eigentlich beim Verstecken 2x die selbe Procedure auf?
Zitat von Helmi:
Delphi-Quellcode:
//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;
Durch das Form.Hide wird der Taskleisten-Eintrag doch sowieso zusätzlich entfernt, wozu also das?
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)!
  Mit Zitat antworten Zitat
Antwort Antwort


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 19:52 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