如何模拟鼠标的拖拽行为.

如何模拟鼠标的拖拽行为. Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiAPI/html/delphi_20061112235944246.html
我想用鼠标模拟拖拽某一表格的列行为,就是把第一列拖到第五列寻样.

计算好目标窗口的坐标,然后把该窗口置为前台,再用类似下面这样的代码试试:  
  mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);  
  mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);

楼上的方法偶试过,但一直没有成功.  
  测试情况是wm_lbuttondown,   wm_mousemove,wm_lbuttonup消息都捕获了  
  (坐标是没有问题的.)  
  就是没有实现拖动列的效果.  
  偶是在DELPHI下试的.  
   
 

function   MouseToScreen(mVertical:   Boolean;   mMouse:   Integer):   Integer;  
  begin  
      case   mVertical   of  
          False:   Result   :=   Round(mMouse   *   (MAXWORD   /   Screen.Width));  
      else   Result   :=   Round(mMouse   *   (MAXWORD   /   Screen.Height));  
      end;  
  end;  
   
  procedure   TForm1.Button1Click(Sender:   TObject);  
  var  
      vPoint:   TPoint;  
  begin  
      vPoint   :=   Panel1.ClientToScreen(Point(1,   1));  
      mouse_event(MOUSEEVENTF_ABSOLUTE   or   MOUSEEVENTF_MOVE,  
          MouseToScreen(False,   vPoint.X),   MouseToScreen(True,   vPoint.Y),   0,   0);  
      mouse_event(MOUSEEVENTF_ABSOLUTE   or   MOUSEEVENTF_LEFTDOWN,  
          MouseToScreen(False,   vPoint.X),   MouseToScreen(True,   vPoint.Y),   0,   0);  
      Dec(vPoint.X,   200);  
      Dec(vPoint.Y,   200);  
      mouse_event(MOUSEEVENTF_ABSOLUTE   or   MOUSEEVENTF_MOVE,  
          MouseToScreen(False,   vPoint.X),   MouseToScreen(True,   vPoint.Y),   0,   0);  
      mouse_event(MOUSEEVENTF_ABSOLUTE   or   MOUSEEVENTF_LEFTUP,  
          MouseToScreen(False,   vPoint.X),   MouseToScreen(True,   vPoint.Y),   0,   0);  
  end;  
   
  procedure   TForm1.FormCreate(Sender:   TObject);  
  begin  
      Panel1.DragKind   :=   dkDock;  
      Panel1.DragMode   :=   dmAutomatic;  
  end;  
 

TO   楼上:  
  非常感谢!  
  可是对TStringGrid列的拖动还是不行.

转载于:https://www.cnblogs.com/delphi2007/archive/2009/02/03/1382878.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值