他のフォームに値を渡す
Delphi で複数のフォームを扱うには参照する方が参照される側のユニット名を uses 節に追加しなければなりません。たとえば Form1 から Form2 を呼び出す場合は Form1 のユニット (Unit1) の uses節 に Form2 のユニット (Unit2) を追加します。追加する場所 (Interfece / Implementation) はどちらでも構いませんが普通は Implementation 部の uses節に追加します。

Form1から Form2の Edit に値を代入したい場合は以下のように VB と同じような記述になります。
Form2 の Edit から値を取得する場合も同じです。
| ■ Form1 から Form2 の Edit に代入する例 |
implementation
{$R *.DFM}
uses
Unit2;
procedure TForm1.Button1Click(Sender: TObject);
begin
//Form2の Editに代入
Form2.Edit1.Text := 'あたい';
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
//Form2の Editから取得
Edit1.Text := Form2.Edit1.Text;
end;
|
Form2 に宣言している変数にアクセスしたい場合は以下のようにします。
他のユニットからは public スコープしか参照できないので注意してください。
| ■ Form2の変数に Form1からアクセスする例 |
//Form2側
type
TForm2 = class(TForm)
Edit1: TEdit;
private
{ Private 宣言 }
public
{ Public 宣言 }
Favorite: string;
end;
|
//Form1側 procedure TForm1.Button1Click(Sender: TObject); begin Form2.Favorite := 'Delphi'; end; |
直接他のクラスの変数へアクセスさせるのはちょっとかっこ悪いのでこれをプロパティで実装すると以下のようになります。
| ■ Form2 にプロパティを追加した例 |
type
TForm2 = class(TForm)
Edit1: TEdit;
private
{ Private 宣言 }
FFavorite: string;
public
{ Public 宣言 }
property Favorite: string read FFavorite write FFavorite;
end;
|
以下のように write を省けば読みとり専用になります。
| ■ Form2 に読みとり専用のプロパティを追加した例 |
type
TForm2 = class(TForm)
Edit1: TEdit;
private
{ Private 宣言 }
FFavorite: string;
public
{ Public 宣言 }
property Favorite: string read FFavorite;
end;
|
以下のように関数、手続きをそれぞれ経由することも可能です。
| ■ Form2 にプロパティを追加した例 |
type
TForm2 = class(TForm)
Edit1: TEdit;
private
{ Private 宣言 }
FFavorite: string;
function GetFavorite: string;
procedure SetFavorite(const Value: string);
public
{ Public 宣言 }
property Favorite: string read GetFavorite write SetFavorite;
end;
var
Form2: TForm2;
implementation
{$R *.DFM}
{ TForm2 }
function TForm2.GetFavorite: string;
begin
Result := FFavorite;
end;
procedure TForm2.SetFavorite(const Value: string);
begin
FFavorite := Value;
end;
|