Delphi-PRAXiS

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 bei GWL_HWNDPARENT wird MessageDlg im falschen Fenster angez (https://www.delphipraxis.net/55293-bei-gwl_hwndparent-wird-messagedlg-im-falschen-fenster-angez.html)

vsti 19. Okt 2005 10:09


bei GWL_HWNDPARENT wird MessageDlg im falschen Fenster angez
 
Moin,

sehr schön habe ich hier schon erfahren, dass ich mit

Delphi-Quellcode:
SetWindowLong(Handle, GWL_HWNDPARENT, 0);
eine Form als zusätzlichen Eintrag in der Taskleiste anzeigen lassen kann.
Klasse Sache, nur jetzt fällt eines auf, das ich noch gerne behoben haben würde.

Wenn ich jetzt im neuen Formular (das, das zusätzlich in der Taskleiste erscheint) nen MessageDlg ausführe, wir dieser im Haupt-Fenster ausgeführt und das neue Formular ist nicht mehr sichtbar, bis man den MessageDlg wieder schließt...

Wie kann ich dem Formular die Eigenschaft geben, dass alle folgenden Fenster (z.B. MessageDlg, Form3.show...) in diesem Formular ausgeführt werden und nicht im Haupt-Fenster?

NicoDE 19. Okt 2005 10:26

Re: bei GWL_HWNDPARENT wird MessageDlg im falschen Fenster a
 
Zitat:

Zitat von vsti
Moin,

sehr schön habe ich hier schon erfahren, dass ich mit

Delphi-Quellcode:
SetWindowLong(Handle, GWL_HWNDPARENT, 0);
eine Form als zusätzlichen Eintrag in der Taskleiste anzeigen lassen kann.
[...]

Das wird nur zu diversen unerwünschten Nebenwirkungen führen. Das Erzwingen eines Eintrags in der Taskbar wird durch den erweiterten Fensterstil WS_EX_APPWINDOW erreicht. Um das Flag hinzuzufügen sollte man die CreateParams des Fensters überschreiben:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Classes, Controls, Forms;

type
  TForm1 = class(TForm)
  protected
    procedure CreateParams(var Params: TCreateParams); override;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  // Force a Taskbar entry by adding WS_EX_APPWINDOW to the extended style
  Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
end;

end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz