急求一组能够在窗体上拖动文本框等控件的API函数。

lanchong781126 2004-03-23 05:18:19
急求一组能够在窗体上拖动文本框等控件的API函数。
能在窗体上动态生成控件,并且动态生成的控件都能被拖动,不要用 dock drag属性。
谢谢了。

...全文
85 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lanchong781126 2004-03-25
  • 打赏
  • 举报
回复
当把属性设定 成 dragkind = dkdock dragmode = dkautomatic 能不能在拖动这个控件的时候不显示标题拦
bullHEcow 2004-03-25
  • 打赏
  • 举报
回复
mark
lanchong781126 2004-03-25
  • 打赏
  • 举报
回复
谢谢,我试一试。
SCUM 2004-03-25
  • 打赏
  • 举报
回复
我是这样实现的:


在主 Form 的 MouseUp() 里:
{
InMove = false;
}

在主 Form 的 MouseMove() 里:
{
if( InMove )
{
TControl * p = (TControl*)Sender;
while( p->Tag == 99 ) p = p->Parent; // 对 Tag 为 99 的控件将拖动其父窗体
p->Left += X - DistX;
p->Top += Y - DistY;
}
}

在主 Form 的 MouseDown() 里:
{
InMove = true;
DistX = X;
DistY = Y;
TControl * p = (TControl*)Sender;
if( p->Tag == 99 ) p = p->Parent;
p->BringToFront();
}





这样 主窗体就能拖动了

然后 需要实现拖动的所有控件 都把 MouseUp MouseDown MouseMove 三个事件指向 Form 的对应事件
就能实现任意控件的拖动了
当然 前提是该控件有 Handle 或者说有以上三个事件

还需要在头文件中加上:
bool InMove;
int DistX, DistY;

不知道这能不能满足你的要求
COKING 2004-03-25
  • 打赏
  • 举报
回复
不好意思!以为是改变尺寸!
COKING 2004-03-25
  • 打赏
  • 举报
回复
SetWindowLong(Edit1->Handle,GWL_EXSTYLE,WS_EX_STATICEDGE);
SetWindowLong(Edit1->Handle,GWL_STYLE,WS_CHILD|WS_VISIBLE|WS_THICKFRAME);
bcbsoft 2004-03-24
  • 打赏
  • 举报
回复
UPP

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧