掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ユニット分割について (ID:150028)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> 決まったフォームを呼び出したいという感じでは無く > 動的に中身の違うフォームを引数に応じて作成したい感じです。 そういう場合は,以下のように全て自前でコントロールを生成することになります. これは,貴方が既に書かれている > 共通につかう処理を1つのPASでまかないたい感じになります。 という趣旨のものとは言えなくなりますし,ユニットの分割とも言えませんね. unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; procedure Button1Click(Sender: TObject); private { Private 宣言 } procedure OnBtnClickEvent(Sender: TObject); public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); var LForm : TForm; LButton1 : TButton; LButton2 : TButton; begin LForm := TForm.Create(Self); LForm.Position := poDesigned; LForm.Width := 300; LForm.Height := 200; LForm.Left := Self.Left + Self.Width; LForm.Top := Self.Top - Self.Height; LButton1 := TButton.Create(LForm); LButton1.Parent := LForm; LButton1.Left := 20; LButton1.Top := 20; LButton1.Caption := 'Button1'; LButton1.OnClick := OnBtnClickEvent; LForm.Show; end; procedure TForm1.OnBtnClickEvent(Sender: TObject); begin ShowMessage('Clicked !!'); end; end. > 動的にusesさせるためには 実行時に uses 部を編集することはできません. プログラムのコードをコンパイルすると EXE ができます. その EXE はマシン語と呼ばれるコードになります. その時,Uses 部のユニットのコードを参照してマシン語を生成します. つまり,たとえできたとしても意味がありません. uses 部に必要なユニットがないと,コンパイル時に [xxx.dcu が見つかりません] のエラーが発生します. このエラーは実行時でなく,コンパイル時に発生します つまり,実行時にユニットを参照するのではありません.. マシン語は EXE を生成した時のプログラムのコードではありません. そもそも > 決まったフォームを呼び出したいという感じでは無く > 動的に中身の違うフォームを引数に応じて作成したい感じです。 なのであれば,uses 部に必要なユニットは, 上のコードで示すように呼び出し側 (フォームを生成する側) の設定になります.
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.