掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Form1で作成した関数をForm2で使用するためには? (ID:20712)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
既に解答があったみたいですが(汗) TForm2からTForm1のメソッドを呼び出すにはどうすればいいか…という事だと思うんですが…。 (TForm1 の privateとかpublicに書いてある関数のことですよね?) 方法はいろいろあります。いくつか紹介します。 ○方法1 たぶん unit2.pas (Form2があるユニット) の implementation の下に uses unit1; でForm2の使いたいところで Form1.関数(); でOK。 ただし、循環参照エラーになる可能性もあります(たぶん大丈夫だと思いますが) また、Form1が開放された後、呼び出すと実行時エラーになってしまいますので 注意してください。 ○方法2 イベントの書き方と一緒です。 ただ、TForm1で完結しておくべき処理、TForm2で完結しておきべき処理 などよく考えてそれぞれのクラスでできる事はやっておく ようにしたほうが、よいと思います。 (TNotifyEventをまねて手続きや関数のパラメータは自由に定義できます。 この場合、TNotifyEventで十分だと思います) (Form2はたぶんプロジェクトのぷションで自動作成ですよね) --------------------------------- unit2.pas type TForm2 = class( TForm) 中略 private FProc: TNotifyEvent; public property IwannaCallThisProcNow: TNotifyEvent read FProc write FProc; end; implementation procedure TForm2.でForm1の関数を呼びたいどこか begin if Assigned(FProc) then FProc(Self); end; --------------------------------- unit1.pas type TForm1 = class( TForm) 中略 private procedure TheForm2WillCallThis(Sender: TObject); public end; implementation procedure TForm1.TheForm2WillCallThis(Sender: TObject); begin //問題の呼びたい関数や処理; end; procedure TForm1.のForm2を表示してるどこか begin Form2.Show; Form2.IwannaCallThisProcNow := TheForm2WillCallThis; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.