掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ScrollBoxのスクロールイベント (ID:25762)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
inherit(相続・継承する)の意味の inherited は、上位クラスのどのメソッドを使うか、相続することにするかを指定します。 サブクラス化というのは、コンポーネントやオブジェクトのように「継承」を使わず「そのものに成り代わる」という手法を使って用意されていない機能を追加します。 今回の場合、TScrollBox.WindowProc を TfrmMain.GetMessage に取り替えたわけです。 したがって、inherited そのものは使いませんし、使えません。 しかし、TScrollBox を機能させるためには、通常 TScrollBox.WindowProc で行っていることをまず実行させないといけません。 そのためには TfrmMain.GetMessage の中にそれをすべて記述しないといけないのですが、そんなことをしなくても OriginalProc(Msg); と1行書けば済むわけです。 この行為がオブジェクト・コンポーネントでの inherited の役割に当たるという意味で 「inherited が必要」と書いてしまいました。 混乱させて申し訳ない。 ついでに述べると、「スクロールを検知して、処理を加えたかった」という処理がどういうものか解りませんが、できるならサブクラス化を使わず ScrollBox を継承したコンポーネントにしてしまうのが一番良いでしょう。 しかし、簡単な処理をするだけだし、今後同じような事を必要とする可能性も少なく、わざわざコンポーネントを作るよりも簡単に済ませたい場合やコンポーネントにしたいが採用に値するコンポが見つからない場合、あるいは作っている余裕が無い場合にはサブクラス化も悪くありません。 良いコンポがあったとしても、実行ファイルサイズを少しでも小さくした場合も有効でしょう。 Halbow さんのこの章に学んでスクロールイベントを実装した ScrollBox のソースを公開していますので、よければ参考にしてください。 http://sadoyama.sakura.ne.jp/world/htm/compo/scrollbox.htm
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.