如何使Panel可以被拖动?

xxiao07 2003-04-27 08:38:46
设定Panel头部的某个区域可以被鼠标拖动
...全文
313 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
牧牛人软件 2003-04-27
  • 打赏
  • 举报
回复
“要Panel头部的某个区域可以鼠标拖动”简单一点:
Panel的头部加上一个Label,Label->Color=clBlue;

void __fastcall TForm1::Label1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{

/*这样也可以
ReleaseCapture();
SendMessage(Panel1->Handle,WM_SYSCOMMAND,SC_MOVE+HTCAPTION,0);

*/
WORD SC_DragMove = 0xF012;
SetCapture(NULL);
SendMessage(Panel1->Handle,WM_SYSCOMMAND,SC_DragMove,0);
}
gdyt007 2003-04-27
  • 打赏
  • 举报
回复
暈!轉眼別人連代碼都寫好了!
DaMimit 2003-04-27
  • 打赏
  • 举报
回复
你为什么不用form呢?
将form的parent指到另外一个form然后。。
gdyt007 2003-04-27
  • 打赏
  • 举报
回复
加入
Panel1->DragMode=dmAutomatic;
Panel1->DragKind= dkDock;
或者在panel的屬性裏面設定就行
牧牛人软件 2003-04-27
  • 打赏
  • 举报
回复
void __fastcall TForm1::Panel2MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
WORD SC_DragMove = 0xF012;
SetCapture(NULL);
SendMessage(Panel2->Handle,WM_SYSCOMMAND,SC_DragMove,0);
}
Libran 2003-04-27
  • 打赏
  • 举报
回复
在Form上放一个Panel,分别响应其MouseDown、MouseMove、MouseUp事件,代码如下:
//定义变量
bool CanMove = false;
int OldLeft, OldTop, OldX, OldY;
//------------------------------------------------------------------------
//响应MouseDown事件
void __fastcall TForm1::Panel1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
TPanel *Panel = (TPanel *)Sender;
if (Y < 20) //指出在Panel上部20像素内按下鼠标才开始移动
{
OldLeft = Panel->Left;
OldTop = Panel->Top;
OldX = Mouse->CursorPos.x;
OldY = Mouse->CursorPos.y;
CanMove = true;
}
}
//------------------------------------------------------------------------
//响应MouseMove事件
void __fastcall TForm1::Panel1MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
TPanel *Panel = (TPanel *)Sender;
if (!CanMove) return;
Panel->Left = OldLeft+(Mouse->CursorPos.x-OldX);
Panel->Top = OldTop+(Mouse->CursorPos.y-OldY);
}
//------------------------------------------------------------------------
//响应MouseUp事件
void __fastcall TForm1::Panel1MouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
CanMove = false;
}
xxiao07 2003-04-27
  • 打赏
  • 举报
回复
我要的是Panel动,而它的Parent(如Form)不动!!
xxiao07 2003-04-27
  • 打赏
  • 举报
回复
写点代码吧
Libran 2003-04-27
  • 打赏
  • 举报
回复
在MouseDown、MouseMove、MouseUp事件里判断、处理

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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