違うフォームで変数を使うには

解決


きのこのこ  2003-12-12 08:33:05  No: 6123

質問いたします。
フォームを二つ準備するとして、
一つ目のフォームに整数型の変数iを準備したとします。
で、一つ目のフォーム上でiの変数を変更可能とします。
まぁ、例えばiを1にしたり、2にしたり…。

で、二つ目のフォームでcase文を用いたいのですが、
そのときに
case i of
    1:  ...
    2:  ...
    3:  ...

のようなことをしたいのですが、勿論iは一つ目のフォーム上で宣言されたものなのでうまくいきません。
何か良い方法はあるでしょうか?


吉岡  2003-12-12 09:45:38  No: 6124

まず、1つめのフォームで以下のように変数宣言します。

type
  TForm1 = class(TForm)
    ....................................
    ....................................
  private
    { Private 宣言 }
  public
    { Public 宣言 }
    i : Integer;  // ←ここで宣言する
  end;

次に参照したい別フォームでファイルメニューからユニットを使うを選択し、上のフォームのユニットを選択します。
そうするとフォーム2のソースに以下のコードが挿入されます。
もちろん手入力で書いてもOKです。

var
  Form2: TForm2;

implementation

uses Form1;  // ←ここが追加される

フォーム2からは

 Form1.i := 0;

のような記述で値を操作することができます。
基本はpublicで宣言すると外部から参照が可能になるということです。


Halbow  2003-12-12 09:50:29  No: 6125

Halbow です。

Unit2 の implementation の下に uses Unit1; を加えて

[ i が Unit1 でグローバル変数の場合 ]

i := Unit1.i;

case i of
    1:  ...
    2:  ...
    3:  ...

[ i が Unit1 で Form1 のフィールド変数の場合 ]

i := Form1.i;

case i of
    1:  ...
    2:  ...
    3:  ...

とするとよいのでは。


吉岡  2003-12-12 10:04:16  No: 6126

>きのこのこさん

一部訂正します(汗

uses Form1;  // ←ここが追加される

じゃなくて

uses Unit1;  // ←ここが追加される

ですね。失礼しました。
IDEを使わないで書いたので凡ミスです(汗)。

>Halbowさま

今朝はありがとうございました。
なるほど。そういう書き方も出来るんですか?


きのこのこ  2003-12-12 11:22:15  No: 6127

吉岡さん、Halbowさん、ご教授ありがとうございました。
上手くできました。
これでまた一つDelphiにおいて賢くなりました。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加