起動時にメインフォームのみを作成し、必要に応じてそのフォームオブジェクトを作成し、それをモーダルとして使用して新しい追加フォームを動的に作成し、そのフォームの目的が完了したら、それを解放することにより、マルチフォームアプリケーションを作成しようとしています。閉じた後の記憶。私のメインフォームのみが「自動作成」され、追加のフォームはすべてプロジェクトオプションで「使用可能」に設定されています。
これがサンプルコードです。
結果フォームは、TResultForm のグローバル変数として宣言されます。
procedure TMainForm.Button1Click(Sender: TObject);
begin
ResultsForm := TResultForm.Create(self);
try
ResultsForm.ShowModal;
finally
ResultsForm.Free;
end;
end;
ボタンをクリックしてこのメソッドを呼び出すと、結果フォームが正常に開き、表示されますが、アクセス違反エラーが発生します。
モジュール 'MyApp.exe' のアドレス 005B0291 でアクセス違反が発生しました。アドレス 00000000' の読み取り。
そのフォームには、そのフォームにリンクされて表示されているデータベースがあります。そのためのコードは機能しますが、問題ありません。Embarcadero のヘルプ ツールから入手したこの新しいサンプル コードを試すと、新しいフォーム (ResultForm) のコントロールのみが読み込まれ、そのフォームに明示的に追加されたコードは開始されません。