![]() |
Minimieren abfangen klappt jedoch nur 1x
hallo
unzwar habe ich son applicationevents und dort das ereignis onminimize mit folgendem code:
Delphi-Quellcode:
..in dem minimierenklick wird die form1.visible:=false gesetzt und dann das trayicon angezeigt. dies ist notwendig, da ich eine form6 habe die auch wenn das programm "minimiert" ist, angezeigt werden soll.
procedure TForm1.ApplicationEvents1Minimize(Sender: TObject);
begin application.ProcessMessages; PostMessage(Handle, WM_SYSCOMMAND, SC_RESTORE, 0); application.ProcessMessages; form1.Minimieren1Click(Sender); end; jo.. also es klappt gut mit dem minimieren beim ersten mal. dann klicke ich auf das icon und so stellt er form1 wieder sichtbar und auch zusätzlich nochmal ein PostMessage(Handle, WM_SYSCOMMAND, SC_RESTORE, 0); aber wenn man jetzt entweder auf das minimieren des fensters oder einfach in die taskleiste klickt passiert nichts. wenn ich mitm rechtsklick inner taskleiste auf die anwendung klicke sehe ich auch das minimieren deaktiviert. wiederherstellen dagegen kann ich klicken und ab dann gehts es wieder einmal. aber ich dachte dieses SC_RESTORE ist wiederherstellen?? also irgendwas funktioniert da ebend nicht richtig mit dem wiederherstellen. mfg timi-loader |
Re: Minimieren abfangen klappt jedoch nur 1x
oh, versuch lieber das WM_SYSCOMMAND direkt abzufangen.
Delphi-Quellcode:
Noch sinnvoller ist jedoch einfach bei den BorderIcons das Minimieren auszublenden.
type
TForm1 = class(TForm) [...] procedure NoMinimize(var AMsg: TWMSysCommand); message WM_SYSCOMMAND; [...] procedure TForm1.NoMinimize(var AMsg: TWMSysCommand); begin if AMsg.CmdType = SC_MINIMIZE then AMsg.Result := -1 else inherited; end; |
Re: Minimieren abfangen klappt jedoch nur 1x
hey cool!
danke für die schnelle und sehr gute antwort :) klappt dann so schon ganz gut, aber wenn man in der taskleiste drauf klickt minimiert es sich immernoch wie normal. und wegen ausblenden: minimierenbutton kann man zwar ausblenden in der titelleiste, aber die anwendung soll ja eh virtuell minimiert werden ;)(ebend nur anders) mfg |
Re: Minimieren abfangen klappt jedoch nur 1x
Der Grund liegt darin das dann direkt an Application.Handle das wm_syscommand geschickt wird. Ich guck mal schnell ob die Lösung die mir vorschwebt da geht.
So, die Variante mit der Message musst du lassen. Damit wird verhindert dass, das Form minimiert wird. Wenn du in der Taskleiste drauf klickst wird das Minimieren an die Anwendung geschickt und muss somit dort verhindert werden:
Delphi-Quellcode:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
begin if (Msg.hwnd = Application.Handle) and (Msg.message = WM_SYSCOMMAND) and (Msg.wParam = SC_MINIMIZE) then Handled := True; end; |
Re: Minimieren abfangen klappt jedoch nur 1x
ok jo das funzt dann auch.
..hab auch in die prozedure dann wieder mein minimieren1click reingetan und jop. ein'n hab i noch^^ unzwar: dieses desktop-anzeigen-symbol bzw die funktion. kann man auch auf diese reagieren? ..ansich macht das nichts aus, da eh form6 beim ereignis trotzdem angezeigt wird, aber trotzdem wärs schön wenns einheitlich gehn würd :) mfg und thx |
Re: Minimieren abfangen klappt jedoch nur 1x
Dieses "Desktop anzeigen" funktioniert anders und minimiert nicht. Dies hat den Vorteil das auch Programme in den Hintergrund wandern welche keinen Minimieren-Button haben. Letzendlich wird dabei nur der Desktop nach ganz vorn gebracht.
|
Re: Minimieren abfangen klappt jedoch nur 1x
aha ok.
na dann lass ich das ohne ereignis. ..findet der user ja evtl auch nicht so schön, wenn ein programm gleich in den tray wandert, wenn er nur den desktop sehen will^^ mfg |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:34 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