![]() |
Zusätzliche Forms unabhängig von der Hauptform steuern
Hi leute,
ich habe in einem Projekt mehrere Formulare die ich gerne unabhängig von der Hauptform bedienen möchte. Es ergeben sich nämlich leider folgende Probleme: Hauptform startet Log Fenster mit .Show. Dem Log Fenster hab ich schon einen eigenen Taskbareintrag gegeben:
Delphi-Quellcode:
Wenn ich nun die Hauptform in den Tray minimiere:
procedure TfrmLog.CreateParams(var Params: TCreateParams);
begin inherited CreateParams(Params); Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW; end;
Delphi-Quellcode:
Dann bleibt das Logfenster erhalten (stimmt so) aber es bleiben auch beide Taskbareinträge erhalten (von der Hauptform und vom Logfenster).
with Screen do
begin DrawAnimatedRects(Handle, IDANI_CAPTION, BoundsRect, Rect(Width - 20, Height, Width - 10, Height)); end; frmHaupt.Hide; Das Problem scheint aber immer nur mit der ersten zusätzlichen Form aufzutreten. Wenn ich nämlich noch eine starte gibt es mit dieser keine Probleme. Mach ich das ganze umgekehrt hab ich mit dem Log Fenster keine Problem dafür aber mit der anderen. Kennt ihr dieses Problem und wisst ihr wie ich es lösen kann? |
Re: Zusätzliche Forms unabhängig von der Hauptform steuern
:duck:
|
Re: Zusätzliche Forms unabhängig von der Hauptform steuern
:duck:
|
Re: Zusätzliche Forms unabhängig von der Hauptform steuern
Liste der Anhänge anzeigen (Anzahl: 1)
Hier mal ein Vorschlag...
|
Re: Zusätzliche Forms unabhängig von der Hauptform steuern
Liste der Anhänge anzeigen (Anzahl: 1)
Danke für deinen Vorschlag. Leider ist es nicht gut wenn alle Fenster minimiert werden, sobald das Hauptfenster in den Tray minimiert wird.
Wenn man folgende Proceduren im dem Test Projekt ändert und dann das Hauptfenster minimiert kann man in der Taskleiste schön mein Problem sehen:
Delphi-Quellcode:
Anbei die veränderte Exe (für die die zu faul sind es zu compilieren :mrgreen: ).
procedure TFMain.WMSysCommand(var Message: TWMSysCommand);
begin if Message.CmdType and $FFF0 = SC_MINIMIZE then begin // FormA.Hide; // FormB.Hide; Hide; end else inherited; end; procedure TFMain.TaskbarEvent(var Msg: TMessage); var Point:TPoint; begin case Msg.LParam of WM_LBUTTONUP: begin // Linksklick... // Self.Visible:=true; // if FormA.isShow then // FormA.Show; // if FormB.isShow then // FormB.Show; // SetForegroundWindow(Self.Handle); Show; end; WM_RBUTTONUP: begin // Rechtsklick... GetCursorPos(Point); PopupMenu.Popup(Point.x, Point.y); end; end; end; |
Re: Zusätzliche Forms unabhängig von der Hauptform steuern
Liste der Anhänge anzeigen (Anzahl: 1)
Oh, ok, dann habe ich dich wohl nicht richtig verstanden.
Hier nochmal ein neuer Vorschlag... |
Re: Zusätzliche Forms unabhängig von der Hauptform steuern
AAAH das schaut schon besser aus :-D
Ein kleines Problem noch: Wenn man Rechts auf den Taskbar eintrag von der MainForm klickt und dann auf minimieren wird die ganze Anwendung minimiert und außerdem nicht in den Tray "geschoben". Ich erklär mir das dadurch das bei dieser Aktion die Message
Delphi-Quellcode:
nicht aufgerufen wird. Gibt es dafür noch eine andere Message?
procedure TFMain.WMSysCommand(var Message: TWMSysCommand);
Kannst du mir bitte noch erklären was dieser Code genau macht und warum man ihn braucht?:
Delphi-Quellcode:
Owner := GetWindow(Handle, GW_OWNER);
ShowWindow(Owner, SW_HIDE); |
Re: Zusätzliche Forms unabhängig von der Hauptform steuern
:duck:
|
Re: Zusätzliche Forms unabhängig von der Hauptform steuern
Das mit dem Minimieren ist mir auch schon aufgefallen. Ich habe allerdings kein Event gefunden, das dort ausgelöst wird. Deshalb vermute ich mal, dass dort auch keines ausgelöst wird und Windows das alles selber organisiert. Das Verhalten ist ja prinzipell auch korrekt und der Taskeintrag bleibt erhalten. Dieses Minimieren ist demnach kein richtiges Minimieren der Anwendung.
Das ShowWindow sorgt dafür, dass der Taskeintrag verschwindet. |
Re: Zusätzliche Forms unabhängig von der Hauptform steuern
Zitat:
Gruß, Christoph |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:01 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