关于窗口停靠的问题~~菜鸟问题

半夜回家 2008-09-07 06:08:31
我看过我论坛上关于我窗口停靠的问题与解答,
但因为在下实在太菜,所以在此发贴,麻烦各位高手帮个忙

是这样的,我现在有两个窗口 A与B
我想通过鼠标拖拉即可以把B停靠在A上,也可以把B从A上面分出来
停上去我用的方法是把A的Dragsite属性改为true
把B的Dragkind属性改为dkDock
但这样的做法有一个问题,就是停上去的B窗体会覆盖A窗体的一些内容,我不知道怎么才能把位置停到A的下面
还有是当B窗体停上去的时候,上面的状态栏不见了,所以更不用说怎么拖出来了.

看以前的帖子是要通过增加事件处理来达到我想要的效果

但因在下我实在太菜,BCB也才接触几天,所以只好过来向高人请教了.
希望解答可以,深入浅出一点.谢谢拉!


...全文
122 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
半夜回家 2008-09-08
  • 打赏
  • 举报
回复
呵呵~~我的安装目录下没有Examples文件夹
不过我找人发给我了
yumikoo 2008-09-07
  • 打赏
  • 举报
回复
DEMO在你的BCB安装目录下\Borland\CBuilder6\Examples\Docking
半夜回家 2008-09-07
  • 打赏
  • 举报
回复
可能是因为我菜的程度太夸张.
第一位所说的BCB6范例我不知道那边找,
第二位的代码有很多我看不懂因为没有注释也不知道是不是需要添加其它的控件.

不过我看http://www.functionx.com/bcb/howto/dockwnd.htm上面的例子总算是可以自由的docking和floating了
只是docking和floating后主窗体的大小都不会变化导致有些东西会被遮盖..哎
可能是我的表达能力有限.不能说明情况

在此先谢谢上面两位了.是我太菜的关系

希望以后的解答可以更加深入浅出一点.因为我真的太.....

如有浪费高手多打几个字的时间那就真的不好意思了
yumikoo 2008-09-07
  • 打赏
  • 举报
回复
LS所言极是。

void __fastcall TMainForm::CoolBar1DockOver(TObject *Sender,
TDragDockObject *Source, int X, int Y, TDragState State,
bool &Accept)
{
Accept = (dynamic_cast<TToolBar*>(Source->Control) != NULL);
if (Accept)
{
// Modify the DockRect to preview dock area (Coolbar client area)
Types::TPoint TopLeft = Types::TPoint(CoolBar1->ClientRect.Left, CoolBar1->ClientRect.Top);
TopLeft = CoolBar1->ClientToScreen(TopLeft);

Types::TPoint BottomRight = Types::TPoint(CoolBar1->ClientRect.Right, CoolBar1->ClientRect.Bottom);
BottomRight = CoolBar1->ClientToScreen(BottomRight);

Source->DockRect = Types::TRect(TopLeft, BottomRight);
}
}

半夜回家 2008-09-07
  • 打赏
  • 举报
回复
哦?在那里看?
帮助吗?
编译失败 2008-09-07
  • 打赏
  • 举报
回复
BCB6的范例中有个Docking程序写的很详细了,可以参考一下

13,873

社区成员

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

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