モナーの *やさしい* Delphi質問スレ Ver.8
■ このスレッドは過去ログ倉庫に格納されています
0735ななしへたぐらま ◆B18Bks.Y
NGNGShepeコンポのドラッグによる移動はこんな感じでしょうか.
>>710さんが意図したのとは違うかも知れませんが
SetCaptureControlでShapeの親がマウスイベントを捕捉するようにしています.
//TForm1のフィールド変数に以下を追加
FDraggingControl: TControl; // ドラッグしているコントロール
FDragOffset: TPoint; // ドラッグしているコントロールの左上座標からドラッグした位置までのオフセット
// 各ShapeコンポのOnMouseDownイベントハンドラ
procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
// ドラッグしているコントロールを保管
FDraggingControl := Sender as TControl;
// ドラッグしているコントロールの左上からマウスカーソルまでのオフセットを保管
FDragOffset.x := X;
FDragOffset.y := Y;
// マウス処理をこのコントロールの親で捕捉するようにする
// (つまり,以後にマウスを動かしたりボタンを離しても
// ShapeコンポのOnMouseMove,OnMouseUpイベントは発生せず,
// 代わりに親の同イベントが発生する)
SetCaptureControl(FDraggingControl.Parent);
end;
(つづく)
■ このスレッドは過去ログ倉庫に格納されています