TWinControl の解説
A-5 :解説 1


  プログラムの解説1            / A-1   A-2   A-3   A-4   A-6  


ではプログラムを実行してみましょう。

プログラムは正常通り動きましたか?
正しく実行された場合、画面上には二つのフォームが生成されたと思います。

  □うまく実効出来ない  >>  エラー一覧へ





■ 移動するネコ

実行してみて分かることなのですが、ボタンを押す度にネコは二つのフォーム間を移動します。
しかもオブジェクト指向プログラミングをしている為、 下位のネコ(上位 ネコA >> ネコB >> ネコC  下位) になるほど上位のネコの能力を継承しています。

ためしにネコ C をクリックしてみましょう。























 

  解説 TWinControl


■ プログラムを書き換えなくてもちゃんと動く

そうです。
今回のプログラムの場合、追加、変更箇所はそれほど多くありません。
せいぜいが MainUnit の数行と、新しく追加された WalkUnit といったところです。
ネコに関するソース、Unit1 Unit2 Unit3 には、まったく手をつけていないのに、プログラムはちゃんと動きました。
これは一体どういうことなのでしょうか?




■ 秘密は TWinControl

この TWinControl は前の Section でも何度か登場し、 それぞれの個所では直接的な説明は避けてきました。
何故なら、この TWinControl というヤツは、オブジェクト指向の理解を深める為の 第一の鍵を握っている中ボスのような存在だからなのです。

TWinControl を探っていくと、何故ネコのソースを書き換えなくても良かったのかが明らかになってきます。




■ TWinControl の登場個所

今まで、TWinControl は、↓の場所に現れました。

Section 1-3 にて procedure TCatA.ShowImage(CatPlace: TWinControl);
Section 1-5 にて procedure TCatC.CATMOVE(CatPlace: TWinControl);


どうでしょう?
TWinControl はいずれもオブジェクトのソースファイル(ネコのソース)に記述されていますね。
ベースとなるソース(MainUnit、WalkUnitなどの、フォームを持ったソース)には TWinControl は登場しません。
これが TWinControl の正体を掴むヒントなのです。



■ メモやボタンの上を移動するネコ

答えは MainUnit の WalkUnit ソース内にあります。
今回、〜(Memo)、〜(Self)、〜(Panel)、〜(Button)といったソースを記述したのを覚えているでしょうか?

Section A-2 にて procedure TMainForm.B2Click(Sender: TObject);
Section A-4 にて procedure TCatA.ShowImage(CatPlace: TWinControl);

ソースをよく見てみて下さい。
どのボタンが押された時に、どの procedure が読み込まれていますか?



そうです、この、(カッコ)でくくられた場所に、ネコは移動しているのです。



トップに戻る /  前に戻る /  次へ