名前 題名 ▼ Mr.XRAYさん > 参考までにこれは以下の様なことです. > > ■自動生成フォームと使用可能フォーム > > (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; > > 以上が自動作成フォームと使用可能なフォームの説明ですが,順三さんのプロジェクト > の様子が不明なものですからお聞きしました. > GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link