|
15番会議室「FAQ編纂委員会」に寄せられた「よくある質問の答え」
[Q]
Shapeなどのコンポーネントプロパティ、TopとLeftにMouseMove
イベントでわたってくるX,Yを代入してもマウスのドラッグに
従わない。どうコーディングすればいいのか。
[A]
コンポーネント上でのOnMouseUp,OnMouseMove,OnMouseDownイベント
などでわたってくるX,Yはsender(マウスでさわっているコンポー
ネント)上でのX,Y座標である。ClientToScreen,ScreenToClient
メソッドを使いマウスのウィンドウ上での座標を求め、コンポーネ
ントのTop,Leftに反映する。
具体的なコーディングは、例を参照。
[例]
Form1にShpaeコンポーネントShape1を作ったとしたら、
private
{ Private 宣言 }
Orgpoint : Tpoint;
Drawing : Boolean;
.............
procedure TForm1.Shape1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Drawing := true;
Orgpoint := point(x,y);
end;
procedure TForm1.Shape1MouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
Var
P : TPoint;
begin
If Drawing Then
Begin
P := Shpae1.Parent.ScreenToClient(
Shape1.ClientToScreen(Point(X, Y)));
Shape1.Left := P.X - Orgpoint.x;
Shape1.Top := P.Y - Orgpoint.y;
End;
end;
procedure Tshape1.Shape1MouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
Drawing := False;
end;
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum FDELPHIに寄せられる質問の中から、よくある質問への回答を FDELPHIのメンバーがまとめたものです。 したがって、これらの回答はボーランド株式会社がサポートする公式のものではなく、掲示されている内容についての問い合わせは受けられない場合があります。
Copyright 1996-1998 Delphi Users' ForumFAQ編纂委員会
|