本人时刚学习写控件的。有个问题没有解决。问题如下
我想让我的控件能够在运型期能够随鼠标脱拽。要求是功能必须是在控件代码中。
我想让我的控件能够在运型期能够随鼠标脱拽。要求是功能必须是在控件代码中。
解决方案 »
- 往ADOQUEYR加SQL语句的问题
- 隐藏或关闭不了进程的方法--------欢迎高手在线讨论
- 谁能把dephi自代的chat程序编译好发给我吗?
- 关于线程的使用问题!
- 在线等!!用Delphi访问数据库,表的字段数极限是多少???
- 怎样获得ACCESS数据库中表的字段类型!解决后马上给分!
- 用visual chm做的帮助文件,编译后图象显示不出来
- 国庆Delphi版的朋友也不能闲着呀!我们也聚会呀!(当然PLMM越多越好)!之二(UP有分
- 如何判别access中的表是否存在,如果存在则删除!
- 请问:BDE能同时维持多少个BDE会话期间呢??(既,同时能建立几个对specific database的联结
- 谁有做过宏定义的软件
- 如何获取当前可用的扫描仪?
implementationvar
OldPt:TPoint; //保存鼠标左键按下时的指针位置
OldLeft,OldTop:Integer; //保存拖动前的left&Top
moving :boolean;
{$R *.dfm}
.....procedure MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
NewPt:TPoint;
begin
if (HIWORD(GetAsyncKeyState(VK_LBUTTON)) > 0) and moving then //判断鼠标左键是否按下
begin
GetCursorPos(NewPt);
(Sender as TControl).Left:=OldLeft
+NewPt.X-OldPt.X;
(Sender as TControl).Top:=OldTop
+NewPt.Y-OldPt.Y;
end;
end;MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin if moving then
begin
moving:=false;
end;
end;MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button=mbLeft then
begin
if not moving then
begin
moving:=true;
end;
GetCursorPos(OldPt);
OldLeft:=(Sender as TControl).Left;
OldTop:=(Sender as TControl).Top;
end;end;