Jetzt weiß ich wieder, warum ich diese Variante verworfen hatte:
Delphi-Quellcode:
type
TfmPluginSettings = class(TForm)
[...]
private
FParent : HWND;
protected
procedure CreateParams(var Params: TCreateParams); override;
public
constructor Create(AOwner: TComponent; const AParent: HWND = 0); overload;
[...]
end;
procedure PluginShowForm(const AhParent: HWND);
var
fmPluginSettings: TfmPluginSettings;
begin
fmPluginSettings:= TfmPluginSettings.Create(nil, AhParent);
try
fmPluginSettings.Init;
fmPluginSettings.ShowModal;
finally
fmPluginSettings.Free;
end;
end;
constructor TfmPluginSettings.Create(AOwner: TComponent; const AParent: HWND = 0);
begin
FParent:= AParent;
inherited Create(AOwner);
end;
procedure TfmPluginSettings.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.WndParent:= FParent;
end;
Bekommt man die Warnung
Zitat:
[Warnung] guiPluginSettings.pas(57): Methode 'Create' verbirgt virtuelle Methode vom Basistyp 'TCustomForm'
irgendwie weg? Oder ginge das nur, wenn man die Warnung für den Bereich abschaltet? Das scheint aber nur für die gesamte Klassendeklaration zu funktionieren, nicht für die Deklaration des Konstruktors selbst.
override;
kann ich ja nicht verwenden, weil die Methode eine andere Signatur hat.
MfG Dalai