![]() |
Fenster beim minimieren in den Taskbar und zurück
Hallo zusammen,
ich habe schon einige Taskbar-Themen im Forum gefunden, leider war aber das richtig noch nicht dabei. Ich habe ein "Kind"-Fenster (kein MDI) meiner Anwendung. Dies soll zunächst nicht in der Taskbar sichtbar sein. Wenn dieses jedoch minimiert wird soll es dort erscheinen. Beim maximieren raus aus der Taskbar und wieder in den Fordergrund. Die Messages für das minimieren und maximieren habe ich schon gefunden. Das sieht soweit gut aus. Das Problem ist das hinzufügen und entfernen aus der Taskbar. Beispiele, die ich bisher gefunden haben machen das Fenster sofort in der Taskbar sichtbar, nicht erst beim minimieren. Danke, Daniel |
Re: Fenster beim minimieren in den Taskbar und zurück
Benütze doch den ApplicationsEvents Komponenten! (under Additional)
Dort kannst du beim den Events angeben onMinimize bzw onRestor!? |
Re: Fenster beim minimieren in den Taskbar und zurück
Ich weiß aber leider nicht was ich dort bei diesen Events angeben muß damit das Fenster in der Taskbar erschein bzw. bei OnRestore wieder daraus entfernt wird.
|
Re: Fenster beim minimieren in den Taskbar und zurück
Probiere es mal mit
Code:
Form1.Hide;
|
Re: Fenster beim minimieren in den Taskbar und zurück
Wie ich die Form minimiere ist mir klar.
Aber mit Form.Hide geht das Ding doch nicht in den Taskbar, oder?! |
Re: Fenster beim minimieren in den Taskbar und zurück
Nein, mit Hide() wird die Form aus der Taskbar entnommen und Show() wieder in die Taskbar gesetzt.
|
Re: Fenster beim minimieren in den Taskbar und zurück
Ich befürchte wir reden hier ein wenig aneinander vorbei, oder ich versteh' es nicht richtig?!
Ich möchte, daß das Fenster beim öffnen sichtbar aber nicht in der Taskbar zu sehen ist. Dann möchte ich das Fenster minimieren und solang das eingentliche Fenster nicht zu sehen ist soll ein entsprechender Eintrag in die Taskbar. Wenn ich das Fenster später wieder maximiere soll der Taskbareintrag natürlich wieder entfernt werden. Ich hoffe das ist jetzt besser rübergekommen. |
Re: Fenster beim minimieren in den Taskbar und zurück
Hallo,
ich habe da jetzt schon mal selbst eine Lösung gefunden. Die gefällt mir zwar nicht so richtig gut aber funktioniert. Wenn jemand eine bessere Idee hat würde ich mich freuen :zwinker: Mein jetztiges Prinzip basiert auf 2 Formularen. Wenn das eingentliche Formular minimiert wird so wird dieses komplett ausgeblendet. Somit ist dies schonmal nicht mehr sichtbar. Diese erzeugt dann ein zweites Formular was nur einen Taskbar-Eintrag erzeugt, selbst aber auch nicht zu sehen ist. Wenn man dann auf den Taskbar-Eintrag klickt wird dieses Fenster zerstört. Vorher wird aber das eigentliche Formular sichtbar gemacht. TTaskbarForm ist das eigentliche Formular. TTaskbarForm2 ist das Formular, was nur im Taskbar sichtbar ist. Und hier jetzt der Code:
Delphi-Quellcode:
type
TTaskbarForm = class(TForm) private FTaskbarWindow: TTaskbarForm2; protected procedure WMSysCommand(var Message: TMessage); message WM_SysCommand; public { Public-Deklarationen } end; function ShowTaskbarForm: TModalResult; implementation {$R *.dfm} function ShowTaskbarForm: TModalResult; var ATaskbarForm : TTaskbarForm; begin Application.CreateForm(TTaskbarForm, ATaskbarForm); try Result := ATaskbarForm.ShowModal; finally ATaskbarForm.Release; end; end; { TTaskbarForm } procedure TTaskbarForm.WMSysCommand(var Message: TMessage); begin case Message.WParam of SC_MINIMIZE : begin FTaskbarWindow := TTaskbarForm2.Create(Self); FTaskbarWindow.ParentHandle := Self.Handle; FTaskbarWindow.Show; Self.Visible := true; Self.Hide; end; SC_RESTORE : begin FTaskbarWindow := nil; Self.Show; Self.Visible := true; Self.Enabled := true; end; else inherited; end; end;
Delphi-Quellcode:
type
TTaskbarForm2 = class(TForm) Button1: TButton; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormShow(Sender: TObject); private FParantHandle : THandle; protected procedure CreateParams(var Params: TCreateParams); override; procedure WMSysCommand(var Message: TMessage); message WM_SysCommand; public property ParentHandle: THandle write FParantHandle; end; implementation {$R *.dfm} procedure TTaskbarForm2.CreateParams(var Params: TCreateParams); begin inherited; Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW; end; procedure TTaskbarForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin ShowWindow(FParantHandle, SW_RESTORE); end; procedure TTaskbarForm2.FormShow(Sender: TObject); begin ShowWindow(Self.Handle, SW_MINIMIZE); Abort; end; procedure TTaskbarForm2.WMSysCommand(var Message: TMessage); begin case Message.WParam of SC_MAXIMIZE, SC_RESTORE : Self.Close; else inherited; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:54 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