参考までにこれは以下の様なことです.
■自動生成フォームと使用可能フォーム
(1)新規プロジェクト作成
(2)[ファイル][新規作成][フォーム]でForm2ができる.
(3)この時[プロジェクト][ソース表示]でプロジェクトのソースは以下のようになる.
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2); //Form1の後にForm2が生成される
Application.Run; //最初の生成Form1がメインフォーム
end.
(4)[プロジェクト][オプション]で表示されるダイアログで左のリストから
[フォーム](Delphi7で[フォーム]タブ)を選択し,[自動作成フォーム作
成]から[使用可能フォーム]へ移動.
プロジェクトのソースは以下の様になる.
(Delphi7では各々
[自動作成フォーム]は[自動作成の対象]
[使用可能なフォーム]は[選択可能なフォーム]となっている)
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1); //Form2は生成されない
Application.Run;
end.
つまり使用可能フォームは,メインフォーム(アプリ実行開始)表示の時は生成されま
せん.何故このようにするかというと,この時Form2が使用するメモリを節約できる
ことと,プロジェクトの管理上に便利だからです.多くのアプリはこのような方法を
とっていると思われます.
では,Form2はどのように実行時に生成するかというと,例えば
■使用可能フォームの生成
(1)Form1にTButton(Button1)を一つ配置
(2)Unit1のコードをアクティブにして[ファイル][ユニットを使う]でUnit2を選択
(3)Button1のクリックイベントを以下のようにする
rocedure TForm1.Button1Click(Sender: TObject);
begin
Form2:=TForm2.Create(Self);
try
if Form2.ShowModal=mrOK then begin
end;
finally
FreeAndNil(Form2); //使い終わったら解放する
end;
end;
以上が自動作成フォームと使用可能なフォームの説明ですが,順三さんのプロジェクト
の様子が不明なものですからお聞きしました.
|