- - PR -
複数のフォーム間でのコントロールのやりとり
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-04-10 14:10
一郎様
ありがとうございます。 何か勘違いしたみたいです。 オブジェクト指向プログラミングの基礎をすっかり忘れていました。 再度、勉強しなおします。 Form2からはForm1に対してDataGridやDataViewのXXを変更して欲しいと依頼するだけで実際の処理は、Form1が行えばよいのですね。よってForm1でPublicのプロパティもしくはメソッドをForm2用に用意し、Form2からはPublicで提供されているプロパティもしくはメソッドを呼べば良いのですね。(直接コントロールをアクセスするのではなく、たとえば指示名や何か文字列を渡す) まだ間違っていれば、ご指導宜しくお願いいたします。 以上 | ||||
|
投稿日時: 2004-04-10 21:43
諸農です。
例えば、もう一つの投稿内容に関連させるとするなら、 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/ |