- PR -

複数のフォーム間でのコントロールのやりとり

投稿者投稿内容
さすけ
常連さん
会議室デビュー日: 2004/04/10
投稿数: 38
投稿日時: 2004-04-10 14:10
一郎様

ありがとうございます。
何か勘違いしたみたいです。
オブジェクト指向プログラミングの基礎をすっかり忘れていました。
再度、勉強しなおします。

Form2からはForm1に対してDataGridやDataViewのXXを変更して欲しいと依頼するだけで実際の処理は、Form1が行えばよいのですね。よってForm1でPublicのプロパティもしくはメソッドをForm2用に用意し、Form2からはPublicで提供されているプロパティもしくはメソッドを呼べば良いのですね。(直接コントロールをアクセスするのではなく、たとえば指示名や何か文字列を渡す)

まだ間違っていれば、ご指導宜しくお願いいたします。

以上
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-04-10 21:43
諸農です。

引用:

Form2用に用意し、Form2からはPublicで提供されているプロパティもしくはメソッドを呼べば良いのですね。(直接コントロールをアクセスするのではなく、たとえば指示名や何か文字列を渡す)



例えば、もう一つの投稿内容に関連させるとするなら、
Form2側はユーザーインタフェースとして「キーワード
入力」と「検索実行」等をユーザーに提供し、
検索実行でForm1に対して入力されたキーワード(と、
検索の開始位置)をベースに表示変更を依頼する、と言
う事になると思います。
Form1側は、「キーワード」(と、検索開始位置)を引
数にしたメソッドをpublic公開しておいて、外部からの
要求に対して処理を行う、と。

これはほんとに一例にしかすぎませんが、このようにし
ておけば、今後、もしも、Form1側の表示用のコントロ
ールであるDataGridをサードベンダー提供のグリッドコ
ントロールに変更したとしても、Form1が外部に提供公開
しているメソッドの変更が無ければ、Form2側が影響を受
ける事が無くなります。

もしも密結合していたなら、コードそのものの変更も多く
なり、せっかくのForm1側の機能強化も、別の所(Form2等、
Form1側が公開したものを利用する側)でバグなどを潜り
込ませる結果となる可能性が高くなります。
#再テストしなければならない項目も増えると思います。

また、別投稿の検索に関して言えば、公開するメソッドの
引数も、DataGrid等の特定クラスにしておくよりも、上位
の抽象クラスやインタフェースクラスを引数にしておいた
方が、より汎用的に適応できるかもしれません。
もちろんケースバイケースになると思いますが。


_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/

スキルアップ/キャリアアップ(JOB@IT)