Mittlerweile habe ich eine Lösung gefunden, auf die mich
dieser Beitrag bei StackOverflow gebracht hat.
Delphi-Quellcode:
type
TfmPluginSettings = class(TForm)
[...]
protected
procedure CreateParams(var Params: TCreateParams); override;
[...]
end;
implementation
var hwndTotalCmd: HWND;
procedure TfmPluginSettings.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.WndParent:= hwndTotalCmd;
end;
procedure PluginShowForm(const AhParent: HWND);
var
fmPluginSettings: TfmPluginSettings;
begin
hwndTotalCmd:= AhParent;
fmPluginSettings:= TfmPluginSettings.Create(nil);
try
fmPluginSettings.Init;
fmPluginSettings.ShowModal;
finally
fmPluginSettings.Free;
end;
end;
Gibt's da noch eine Möglichkeit, die unitglobale Variable zu vermeiden und stattdessen z.B. in eine Feldvariable von TfmPluginSettings zu verwandeln? Das CreateParams wird ja nicht direkt gerufen, aber sofort ausgelöst, wenn der Konstruktor arbeitet, z.B. durch ein
inherited Create;
. AFAIK sollte man es ja vermeiden, vor dem
inherited
eines Konstruktors irgendwas anderes zu machen.
MfG Dalai