![]() |
TOpenDialog mit StayOnTop
Moin,
ich habe ein Programm welches ich mit folgendem Code immer als höchtes Fenster gesetzt habe.
Delphi-Quellcode:
Diesen Code habe ich auch in alle anderen Fenster so eingefügt, das alle von mir geöffneten Fenster auch immer OnTop sind. Das funzt soweit auch ganz gut. Nur muss der User am Anfang eine Datei laden, damit er mit dem Prog arbeiten kann. Das Problem ist nur, das der OpenDialog dahinter auftaucht. Nun habe ich mir meinen eigenen OpenDialog geschrieben, abgeleitet von TOpenDialog. Dort habe ich das Execute überschrieben und dann ebenfalls diesen Code eingefügt. Da der OpenDialog aber kein Left, Top, Width und Height hat, habe ich die Werte erstmal mit starren Zahlen vorbelegt. Aber der OpenDialog kommt trotzdem nicht nach vorne. Habt ihr vielleicht eine Idee, wie man es schafft das er immer OnTop ist?
Procedure TMainWinForm.SetDesktopParent;
Begin If ( fDesktopParent ) Then SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE Or SWP_NOMOVE Or SWP_NOSIZE) Else SetWindowPos(Handle, HWND_NOTOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE Or SWP_NOMOVE Or SWP_NOSIZE); End; |
Re: TOpenDialog mit StayOnTop
du musst auf das parent-Handle zugreifen.
weiterhin brauchst du left,width, height und top nicht zu definieren wenn du SWP_NoMove bzw. SWP_NoSize verwendest... beispiel:
Delphi-Quellcode:
hab das allerdings im überschriebenen DoShow, ob das auch im exceute funktioniert, lass ich dich mal testen :), ist aber imho zu zeitig...
SetWindowPos(GetParent(self.Handle), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE);
HTH Frank |
Re: TOpenDialog mit StayOnTop
Vielen Dank für deinen Hinweis. Im DoShow funktioniert das wunderbar.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 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