如何模拟鼠标的拖拽行为.
http://www.delphi2007.net/DelphiAPI/html/delphi_20061112235944246.html
我想用鼠標(biāo)模擬拖拽某一表格的列行為,就是把第一列拖到第五列尋樣.
計(jì)算好目標(biāo)窗口的坐標(biāo),然后把該窗口置為前臺(tái),再用類似下面這樣的代碼試試: ?
? mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0); ?
? mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
樓上的方法偶試過(guò),但一直沒(méi)有成功. ?
? 測(cè)試情況是wm_lbuttondown, ? wm_mousemove,wm_lbuttonup消息都捕獲了 ?
? (坐標(biāo)是沒(méi)有問(wèn)題的.) ?
? 就是沒(méi)有實(shí)現(xiàn)拖動(dòng)列的效果. ?
? 偶是在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 ? 樓上: ?
? 非常感謝! ?
? 可是對(duì)TStringGrid列的拖動(dòng)還是不行.
總結(jié)
以上是生活随笔為你收集整理的如何模拟鼠标的拖拽行为.的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。