如何进行窗口分割?

yixiu121 2004-06-22 09:43:05
我想将一个窗口分割成两个部分(两个窗口),每个部分保留有窗口的特征,比如水平、垂直滚动条、可放置Image控件等。请问哪位高手能帮忙解决,盼,盼!!!
...全文
393 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
doook 2004-07-30
  • 打赏
  • 举报
回复
同意Maconel的说法,用ScrollBox应该可以实现。
GodenFluteSoftBoy 2004-07-09
  • 打赏
  • 举报
回复
这样做实现当然是没问题的了。
模拟两个窗口效果还好(出乎我的意料每个窗口上面还多出了一个小×,可以关闭^_^),我的意思是说拆分成多个窗口,比如说拆成2×2四个窗口,按照你的办法是不是分别在两个Panel中再加上两个Panel呢,这样模拟的效果还是不对,起码每个窗口上的那个小标题栏就排列的杂乱无章,不能构成一个“十”字,拖动时想要四个窗口统一运动,就需要另写了,不知道楼上有什么高见~~~~~~~~~
setdefault 2004-07-08
  • 打赏
  • 举报
回复
另两个Form做成单独的类,在父窗口中创建对象,然后直接调用语句Form->Dock(Panel1,Panel1->ClientRect),其中Form是新建的Form对象的名字,Panel1是父窗口中想要停靠的Panel的名字。你试一下不是很麻烦
GodenFluteSoftBoy 2004-07-08
  • 打赏
  • 举报
回复
楼上所说的是在什么前提下,如果直接这样做好像实现不了,运行时会出问题,而且如果想达到和拆分窗口一样的效果,好像还需要写很多代码
setdefault 2004-07-08
  • 打赏
  • 举报
回复
用3个Form,一个作为父窗口,上面定义两个Panel,DcokSite=true;用split分割;另2个Form用Form->Dock(Panel1,Panel1->ClientRect)
GodenFluteSoftBoy 2004-07-07
  • 打赏
  • 举报
回复
“hear_rain(蓉儿) ”,看名字好像是位小妹妹,呵呵^_^
GodenFluteSoftBoy 2004-07-07
  • 打赏
  • 举报
回复
首先,我要说的是,我是在主窗口的OnFormCreate()中new出四个子窗口的(前提是已经重载了子窗口的CreateParams()),当然你可以在主窗口的OnClose()中一个个对子窗口进行处理。
不过我是这样做的:在子窗口的OnClose()中加上“Action=caFree;”这样主窗口关闭时,子窗口自动释放,但为了安全起见,我同样在主窗口的OnDestroy()中加入了相应的检测处理代码,来确保子窗口被删除。我并没有遇到你说的情况--程序运行中当关闭主窗口时,能够看到子窗口一个个被关闭,然后主窗口关闭--,我的程序运行的很好。提示一点:CreateParams()中的参数要设置好。
hear_rain 2004-07-07
  • 打赏
  • 举报
回复
to GodenFluteSoftBoy(金笛秀才)
接着这个问题,我还想问一下,
你的意思是说,子窗口都是在主窗口里new出来的?
那么当主窗口关闭的时候,你是不是也需要一个个去close以及delete这些子窗口?
我之前也遇到过类似的问题,在主窗口有个关闭的button,在这个button的OnClick里调用Close(),在主窗口的OnClose里,去一个个对子自窗口进行处理。遇到的一个问题就是:程序运行中当关闭主窗口时,能够看到子窗口一个个被关闭,然后主窗口关闭,这样觉得特别慢。
不知道你这里怎么处理?
Maconel 2004-07-07
  • 打赏
  • 举报
回复
呵呵,这是我努力的结果
xjp6688 2004-07-07
  • 打赏
  • 举报
回复
up
GodenFluteSoftBoy 2004-07-07
  • 打赏
  • 举报
回复
Tp:hear_rain(蓉儿)
你的想法也不错^_^
Maconel 2004-07-07
  • 打赏
  • 举报
回复
到底要什么样的效果
你看看ScrollBox这个控件能不能满足你
hear_rain 2004-07-07
  • 打赏
  • 举报
回复
还是要谢谢秀才的思路
我现在是把一些处理放在OnDestroy里进行了

也谢谢&不好意思楼主
在你的帖子里讨论另外的问题~
hear_rain 2004-07-07
  • 打赏
  • 举报
回复
我程序的情况跟金笛秀才的不太一样。
我的子窗口并不是主窗口生成的时候就生成,而是在程序运行中根据需要来生成,比如说主窗口有TMyChildForm* cfrm[4];
当然在TMyChildForm是重载了CreateParams的。
程序运行中,根据需要(用户的某个操作)new了cfrm[0],而用户操作可能又关闭了这个cfrm[0],对我来说,我希望关闭cfrm[0]就会delete它,因为之后又可能需要new cfrm[0]。。。所以每次new之前我都会去判断cfrm[i]是不是null,如果不是就不允许new

这样,如果只是在TMyChildForm的OnClose里做Action=caFree,似乎没有办法delete它。所以我的做法是在TMyChildForm的OnClose里发消息给主窗口,由主窗口来delete它,这样下次再new的时候就不会有问题了.


hear_rain 2004-07-06
  • 打赏
  • 举报
回复
那其实并不是拆分,而是多了几个form,是吧?
ToIP 2004-07-06
  • 打赏
  • 举报
回复
是不是象word里的多文档一样啊

^_^, 那就用多文档
Maconel 2004-07-06
  • 打赏
  • 举报
回复
那样连窗口的标题栏也会出来
而且不一定非要手动创建,在设计时设计好,显示出来后,设置它的父为主窗口一样可以。
lilige 2004-07-06
  • 打赏
  • 举报
回复
Maconel(Maconel)--你的分升的好快呀
GodenFluteSoftBoy 2004-07-06
  • 打赏
  • 举报
回复
我想到办法了,而且已经实现了(我是把主窗口拆成四个子窗口了),如果你想把窗口分成两个,方法就是:创建一个主窗口(Form),再创建两个子窗口(Form),然后重载两个子窗口的窗口创建函数(CreateParam),改变创建选项,使他们成为主窗口的子窗口,另外需要在自动创建选项里,将它们改为手动创建,在主窗口的FormCreate函数里动态创建就可以了,而且需要的话还可以自由改变大小,这是我的浅见,可能不是最简单的,大家交流。
GodenFluteSoftBoy 2004-07-06
  • 打赏
  • 举报
回复
是多了几个Form,真正拆分的方法我也没找到,但这样可以模拟,效果还可以。补充一点,这样子窗口的标题栏不会出现,可以做成和拆分的效果一样,而且保留窗体特性,我已经实现了,唯一的缺憾是在任意拖动时感觉有一点点闪烁
加载更多回复(7)

13,826

社区成员

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

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