掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
重なったコントロールのうち、下のコントロールのクリックを取得するには? (ID:20664)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
えーとさん、いつもありがとうございます。 今回の件は、先日ご指導いただいた件の延長なんです。 どうぞ、また相談にのってください。 えーとさんが前回サンプルで提示されたTLineにあたるものをTPaintBoxから派生させて作ることを考えています。 クリックを受け取りたいため、TPaintBoxから派生することを考えました。 複数のTlineインスタンスを生成して、各インスタンスごとにクリックした箇所の描画色を調べたいと思っています。 先日の例では次のようなクラス階層でした。 TZukei ← TLine・・・(A) この場合のTZukeiが親コントロールとなりますよね? あれ?そういえばえーとさんはこの関係を「上位クラス」と表現なさいますね・・。 すると、親コントロールはTLineのインスタンスを登録した ZukeiList: TObjectList・・・(B) の方でしょうか? それとも、Parentプロパティで指定する「親」のことかもしれませんね。 ALine.Parent := Panel1 の場合はPanel1 ・・・(C) ※生成した複数のTLineは配置用のPanel上に配置する予定です。 こうやって整理すると、えーとさんがおっしゃているのは(C)のようです。 (B)でも代用できそうですね。 (C)と考えて続けます。 1)クリックを受けたTLineのインスタンスが親コンポーネントにクリック位置の情報を渡す 2)親コンポーネント(Panel1)がすべての子コントロールに対して、問合せ処理をする →TLine(Panel1.Controls[i]).AMethod(X,Y); 3)該当する子コントロールは必要な処理をする という感じをおっしゃっている気がします。 親の座標と子の座標の変換は、クリックを受け取った子のLeftやTopとクリック位置の情報から求められそうです。 また、別の子のLeftやTopを踏まえて、その子のクリック座標を求めることもできそうですね。 この判断は親ではなく、子が担当した方がスマートなのかもしれません。 この方向で考えて見ます。 実際にコードを作成して、報告または相談いたします。 そのときは、どうぞよろしくお願いいたします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.