难题:怎样限制一个FORM只在一个创建它的FORM中固定的区域内可移动?(200分)

  • 主题发起人 主题发起人 filter
  • 开始时间 开始时间
F

filter

Unregistered / Unconfirmed
GUEST, unregistred user!
主from有菜单,左下有个panel,由它创建的form的left和TOP,不能越过主菜单的BUTTON和panel的right.有些类似delphi的编辑界面。
但不能限制用mouse拖动到主菜单和panel.还有,新创的form是个mdi窗口。
 
没看明白呀。
 
给新窗口指定一个父亲,他就只能在父亲的区域内活动,
父亲可以是主窗口,也可以自己定义一个容器。
 
把标题栏去了
 
cook的主意应该不错。不过我刚看到时是这样想的。
设,想使form2只能在form1的范围内移动。
做一个在form2移动时和改变大小时的检测form2.left,form2.top,form2.width,form2.height代码段。
 
在form2的onmousemove事件中,将form1的边界大小传递给
该事件的X和Y参数!
 
只有理论,但都没有考虑如果将理论实现出来。onmousemove只能控制mouse的移动,
不能控制mouse拖动form。
 
1、用Form的Constrains
2、响应WM_WindowPosChanging消息,DelphiIDE是这么做的
 
但不能限制用mouse拖动到主菜单和panel  是什么意思?是不新创建
的窗体被拖动不受影响吗!
newform.Left:=parantform.left;
newform.Top:=parantform.Top+parantform.Height;
是这个意思吗!请说详细点!(上次回答没看清楚,很抱歉)
 
对,拖动不受影响,但区域要有所限制
 
newform.Left:=parantform.left;
newform.Top:=parantform.Top+parantform.Height;//这是新窗体被创建时限制他的位置
至于被拖动时的限制区域,利用WM_WINDOWPOSCHANGING消息中的msg.windowpos中的参数
限定就可以了!
 
楼上老兄帮忙写出来行吗?让大家都看看。
 
后退
顶部