名前 題名 ▼ おかぽんさん > ▼ snail3さん > > マウスイベントですが、コンポーネント本体でクリックした時は > > 反応しますが、このコンポーネントに載せた子コンポーネントで > > クリックすると補足することができませんでした。子供でクリック > > した場合も横取りする方法はないでしょうか。 > > WM_PARENTNOTIFYをとっつかまえると、子コントロールのマウスダウンだけなら > 補足できるようです。 > > 手抜きかつDelphi5での記述ですが・・・ > とりあえずTScrollBoxと位置を表示するためのTLabelを1個を配置。 > それ以外は、TPanelとかTEdit,TConboBox,TListBox等を、TScrollBox上に適当に配置。 > > type > TScrollBox=class(Forms.TScrollBox) > private > procedure WMParentNotify(var Message: TWMParentNotify); message WM_PARENTNOTIFY; > public > HintLabel :TLabel; > end; > > TForm1 = class(TForm) > ScrollBox1: TScrollBox; > Label1: TLabel; > //コンポーネントいろいろ > procedure FormCreate(Sender: TObject); > procedure FormDestroy(Sender: TObject); > end; > > procedure TScrollBox.WMParentNotify(var Message: TWMParentNotify); > begin > if HintLabel <> nil then begin > case Message.Event of > WM_LBUTTONDOWN: HintLabel.Caption := 'L: X=' + IntToStr(Message.XPos) + ' Y=' + IntToStr(Message.YPos); > WM_MBUTTONDOWN: HintLabel.Caption := 'M: X=' + IntToStr(Message.XPos) + ' Y=' + IntToStr(Message.YPos); > WM_RBUTTONDOWN: HintLabel.Caption := 'R: X=' + IntToStr(Message.XPos) + ' Y=' + IntToStr(Message.YPos); > end; > end; > end; > > procedure TForm1.FormCreate(Sender: TObject); > begin > ScrollBox1.HintLabel := Label1; > end; > > procedure TForm1.FormDestroy(Sender: TObject); > begin > ScrollBox1.HintLabel := nil; > end; GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link