3

起動時にメインフォームのみを作成し、必要に応じてそのフォームオブジェクトを作成し、それをモーダルとして使用して新しい追加フォームを動的に作成し、そのフォームの目的が完了したら、それを解放することにより、マルチフォームアプリケーションを作成しようとしています。閉じた後の記憶。私のメインフォームのみが「自動作成」され、追加のフォームはすべてプロジェクトオプションで「使用可能」に設定されています。

これがサンプルコードです。

結果フォームは、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) のコントロールのみが読み込まれ、そのフォームに明示的に追加されたコードは開始されません。

4

0 に答える 0