お知らせ

電子会議

ライブラリ

FDelphi サイト全文検索

Delphi FAQ一覧

サンプル蔵



FDelphi FAQ
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編纂委員会