フレームにイベントを追加


歳三  2005-07-08 14:33:06  No: 16267  IP: 192.*.*.*

TFrameに独自のイベントを追加し、そのフレームを貼り付けた
フォームで、追加したイベントを発生することはできないでしょうか?

編集 削除
メラトニン  2005-07-09 09:22:05  No: 16268  IP: 192.*.*.*

可能です、
例えば
//フレーム
procedure TFrame2.Button1Click(Sender: TObject);
begin
  Showmessage('');
end;
//フレームを持つフォーム
procedure TForm1.Button1Click(Sender: TObject);
begin
  //Frame21:TFrame2
  Frame21.Button1.Click;
end;

編集 削除
歳三  2005-07-11 08:54:47  No: 16269  IP: 192.*.*.*

メラトニンさん、ありがとうございます。
ちょっと違うと思うのですが、上記例ですと、
  TFrame2.Button1Click(Sender: TObject);
が発生した直後に、TForm1上のイベントが
自動的に発生するようにしたいのです。

編集 削除
@Enum  2005-07-11 09:12:36  No: 16270  IP: 192.*.*.*

procedure TFrame2.Button1Click(Sender: TObject);
begin
  Form1.TuikasitaEvent;
end;

って事ですか?

編集 削除
歳三  2005-07-11 09:30:41  No: 16271  IP: 192.*.*.*

@Enumさん、ありがとうございます。
そうです!これでできそうです!

ですが、・・・

これですと、フレームのコード内に uses Unit1;
などと記述しないといけませんよね。
色々なプロジェクトでこのフレームを利用したい場合、
これですと具合が悪い場合があり、再利用しづらいです。
何か良い方法はないでしょうか?

編集 削除
aq  2005-07-11 10:27:36  No: 16272  IP: 192.*.*.*

呼びたいイベントを
frameに
機能を追加して
メソッドのアドレスとかを最初から登録できるようにしていればいいだろ

if ◎ <> nil then

編集 削除
Mr.XRAY  URL  2005-07-11 19:23:40  No: 16273  IP: 192.*.*.*

>色々なプロジェクトでこのフレームを利用したい場合、
>これですと具合が悪い場合があり、再利用しづらいです。

フレーム(TFrame)というのは,他のコントロールを配置できる特別なコンポーネントです.
これをテンプレートやリポジトリに登録して再利用,つまり,コンポーネント
として利用できます.したがって,配置したプロジェクトのフォーム上で,
このフレームのボタンのイベントを作成して,@Enumさんの提示したように
利用できます.つまり,このイベントのコード配置したフォームごとに別
のコードとすることができます.つまり再利用可能ということですね.

フォームに配置するコンポーネントとして利用できる.これがフレームの
特徴です.

編集 削除