一个image在form上
如何在程序运行事用鼠标拖动image??而且只能沿着一定的轨迹拖动我是新手  谢谢!!!!!

解决方案 »

  1.   

    快给我加分吗?我需要它呢?
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls;type
      TForm1 = class(TForm)
        Image1: TImage;
        procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
          Y: Integer);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
       dx, dy: integer;
    implementation{$R *.dfm}procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
        dx := X;
      dy := Y;
    end;procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
        if ssleft in shift then
      begin
        image1.left:=image1.left+x-dx;
        image1.Top:=image1.Top+y-dy;
      end;
    end;end.
      

  2.   

    谢谢
      不过我如果要指定一个轨迹  要怎么写  还有那个if ssleft in shift then是什么意思 
      

  3.   

    ssleft in shift的意思是鼠标左键按下
      

  4.   

    1.如果轨迹是一条水平直线的话那么只要把image1.Top:=image1.Top+y-dy;删除,查垂直的把image1.left:=image1.left+x-dx;删除
    以及在TForm1.FormCreate事件中把轨迹的起点:=image1的位置。
       
       2.ssleft in shift的意思判断鼠标左键是否按下。