![]() |
AW: VCL-Fenster oberhalb eines ShowModal()-Fensters
So könnte es vielleicht gehen (Quick & Dirty!):
Delphi-Quellcode:
type
TOverlayForm = class(TForm) procedure FormCreate(Sender: TObject); private procedure ScreenActiveFormChange(Sender: Tobject); protected procedure CreateParams(var Params: TCreateParams); override; public end; procedure TOverlayForm.FormCreate(Sender: TObject); begin Screen.OnActiveFormChange := ScreenActiveFormChange; end; procedure TOverlayForm.CreateParams(var Params: TCreateParams); begin inherited; Params.ExStyle := Params.ExStyle or WS_EX_TOPMOST or WS_EX_NOACTIVATE; end; procedure TOverlayForm.ScreenActiveFormChange(Sender: Tobject); begin if (Screen.ActiveCustomForm <> Self) then begin PopupParent := Screen.ActiveCustomForm; end; end; |
AW: VCL-Fenster oberhalb eines ShowModal()-Fensters
Danke, das sieht schon sehr gut aus! :thumb:
Die CreateParams sind anscheinend auch gar nicht nötig, das Zauberwort war das
Delphi-Quellcode:
-Event!
Screen.OnActiveFormChange
|
AW: VCL-Fenster oberhalb eines ShowModal()-Fensters
Screen.OnActiveFormChange
Reagiert aber nur auf VCL-Forms. z.B. Windows-Fenster/Dialoge die sich nicht bei der VCL registrieren, fallen da raus. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:48 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