私はdllでフォームを作成しています。パッケージはありません。Delphi:dllでフォームを配置する
procedure ShowAbout(const AppHandle: THandle); stdcall;
var
aHandle: THandle;
form: TfrmAbout;/my form in some other unit in the dll
begin
aHandle:= Application.Handle;
Application.Handle:= AppHandle;
form :=TfrmAbout.Create(Application);
form.ShowModal;
form.Free;
Application.Handle:= aHandle;
end;
フォームが正しく表示され、問題はありません。今、私がしたいのは、poMainFormCenter(私はそれがメインフォーム(DLLを呼び出すフォーム)の上に常に表示したいということです)。
私はフォームを使ってみました:= TfrmAbout .Create(Application.MainForm);などが、ここで役立つだろう
どれトリック
ウィンドウハンドルの代わりに 'Application'ポインタを渡す必要があります。それは粗末ですが、残念ながら他の方法では動作しません。 –
絶対に 'Application'ポインタを渡さないでください。 VCLのあるインスタンスから別のインスタンスにオブジェクトを渡すことはできません。それにはランタイムパッケージを使用する必要があります。 –