Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi VCL-Fenster oberhalb eines ShowModal()-Fensters (https://www.delphipraxis.net/194895-vcl-fenster-oberhalb-eines-showmodal-fensters.html)

Uwe Raabe 17. Jan 2018 12:13

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;

Der schöne Günther 17. Jan 2018 12:25

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:
Screen.OnActiveFormChange
-Event!

himitsu 17. Jan 2018 13:28

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.
Seite 2 von 2     12   

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