掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
パネル内のコントロールクリック時、親パネルがクリックされたように見せかけたい (ID:30292)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
OnMouseUpだけで処理しようとすると、パネル外の部分でマウスDownし、 パネル内でマウスUpした場合にもクリック処理が走ってしまったので、 OnMouseDownでラベルの親パネルにフォーカスをセットし、OnMouseUpで ラベルの親パネルにフォーカスがあればクリックイベント発生、としました。 何も問題がなければこれで行ってみようと思います。 ありがとうございました。 procedure TForm1.LabelInPanelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var ctlParent: TWinControl; begin if Button = mbLeft then // 親パネルにフォーカスを移す ctlParent := TControl(Sender).Parent; if ctlParent.CanFocus then ctlParent.SetFocus; end; procedure TForm1.LabelInPanelMouseMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var ctlParent: TWinControl; begin if Button = mbLeft then // マウスDownしたパネルと同じパネルでMouseUpした場合のみ、クリックイベント発生 ctlParent := TControl(Sender).Parent; if Self.ActiveControl = ctlParent then TplButton(ctlParent).OnClick(TControl(Sender).Parent); end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.