掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
背景が透明な線を描画するには、どのようなアプローチが良いか? (ID:20614)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> >「inherited;」が必要かどうか? > > デル太さんの解釈であっています。この場合、上位クラスは abstract メソッドなので、ないほうがいいと思います。コンストラクタの場合はあってもなくてもいいと思います。 ありがとうございます! abstractは「下位クラスで実装しなさい」でしたよね? それであれば、inheritedはない方が誤解がないですね。 コンストラクタの場合は、必要なら呼ぶし、必要なければ呼ばない、と理解しました。 > > 「えーと」様のご指摘のように、コピペではダメなことがわかりました。 > > コピペで動作しないのは、初歩の初歩です。 初歩の初歩なんですね。(苦笑) もしかすると、IDEの基本を理解できていないのかもしれません。 みなさま、お勧めの書籍などございますか? > イベントハンドラは、TForm 派生クラスのメソッドにすぎませんが、特別なことがあります。それは、オブジェクトインスペクタを通じて、イベントとハンドラが結びつけられていることです。この内容は *.dfm ファイルに記録されています。ですから、単なるコピペでは、この結びつきがないので、イベントが起きてもハンドラが呼び出されません。イベントハンドラをコピペするときは、まず、オブジェクトインスペクタで空のハンドラを生成し、それをコピペで上書きするといいです。 このご説明は、示唆に富み、考えるきっかけを与えてもらいました。 そして、とてもわかりやすいです。ありがとうございます。 別スレッドでの疑問のかなりの部分に関連していると思います。 そこで、別スレッドでも紹介させていただきました。 重複になってしまいますが、 > (1)イベントハンドラはTForm派生クラスのメソッドである とあるので、TForm派生クラス内に宣言を書きました。 すると、オブジェクトインスペクタにMyClickメソッドが表示されるではありませんか! それを選択してOnClickに関連付けて、保存すると、OnClick = MyClick が記録されています。 かなり理解を進めることができました。 まだ「イベント」と「イベントハンドラ」が別にあるのか?という疑問が残っています。 お伺いしてもよろしいでしょうか? 「イベントが起きてもハンドラが呼び出されない」 という記述から、イベントとハンドラは別のものと思います。 TButtonControl←TButton を対象にClickを題材に調べてみたところ、 property OnClick; となっています。 OnClickがイベントの実装部分か?と予想していたのですが、ここから先がたどれませんでした。 procedure TButton.Click; var Form: TCustomForm; begin Form := GetParentForm(Self); if Form <> nil then Form.ModalResult := ModalResult; inherited Click; end; もみつけました。 ただ、上位クラスのTButtonControlにはClickがありませんでした。 さらに上位のTWInControlにも見つけられませんでした。 イベントはどこに記述されているのでしょう・・? dfmファイルがあるのかな・・???
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.