新换了工作,又新换了IDE。(尼玛,新公司用的竟然是C++ buider,搞不定啊)
新上手项目,(我去,老破难,竟然是99年的,03年的代码都有),
遇到新问题,求教更高手。描述如下:
1:C++ buider 一个大窗体里面有各小窗体,现在反应,外面的大窗体竟然不能拖拽缩小了。
(更让我不得其解的是,说是在XP能,现在Win7用户反应不能了。)
2: 具体表现为,拖拽会把里面的各小控件产生相应的比例适应缩小,但是外面的那个大的反而不小,就是全屏。
3:初步猜测是某些 size属性什么的,我都试了一遍,都没找到。
4:对Onresize函数进行编写,用里面的小控件来确定大窗体的位置和大小,会表现为,反复的闪烁,他就是想放到最大。
(我是这么想的,既然里面的控件都缩小了,外面实在不行,从里往外写测试吧,出现的情况)
5:在resize里给定确定的值,却能固定住他让它缩小。(其实这样反证了它其实是可以repaint实现的,4中的反复有可能是因为
从里到外的值不能正好,造成反复的size变化,可是我添加了staic 临时变量来控制了啊,怎么还出现4的情况,不解)。
6:没找到Init 的函数,本来想用vc那一套(create,init,resize,paint)流程的,竟然无从下手,这到底是哪个愿意呢。
因为联网搜了良久各种原因,尝试解决了,都没成功,所以,再次发帖求组,希望多多收集可能的原因,对的错的,有可能想到的,统统说说吧,求指教啊。
至此,致敬。
20140715 18:42
14 个解决方案
#1
不就是调整 Anchors 属性么。
#2
新建一个窗体,把原来的小控件一个个复制过去,放弃原来的窗体
#3
修改所有控件的Anchors 为默认属性
#4
"Anchors是确保该控件与它的父控件的相对位置保持不变,即使父控件改变大小"
现在是外面这个大窗体不能改变大小,总是要回复最大化(所以resize会造成闪烁),aNCHORS能造成这种效果?
从这个理论去思考,那只能看看,这个大窗体外面是不是还有他的父控件(晕,麻烦啊,这工具到底怎么用,不习惯各种窗操作,这些功能窗体都放哪了?)
4楼那兄弟说的修改所有控件的anchors,如果有用,那就是因为里面子窗体的原因会导致父窗体的不能改变大小位置,也在尝试中。
3楼那倒是个好主意,那工程部大了去了。。。。
#5
这倒是个号主意。。就是,那工程大了去了。。。有什么原因,比如属性设置,或者某个函数,会造成窗口最大化,不让修改的呢
#6
经过修改调整 Anchors 属性尝试,是有点奇怪的发现,外面那个大窗口的Anchors 属性竟然不能修改,修改完,保存,编译,重新打开,又回复到了原来的所有(left,top,right,bottom)。我就想是不是这工程有问题呢,这不让修改,然后对其他属性,比如显示标题 caption修改,竟然能成功,那为什么 Anchors 属性不能修改,这算什么事?
#7
Anchors 属性只对子窗口有意义。至于你说的“外面那个大窗口”,我猜你说的是Form吧?
把Form的BorderStyle属性设置成bsSizeable就可以拖动更改大小了。
把Form的BorderStyle属性设置成bsSizeable就可以拖动更改大小了。
#8
选中底层的大控件,比如Panel之类,复制的时候上面的小控制都直接跟过去了,不用一个个复制
#9
回复: 这个属性本来就是bsSizeable没问题,不是这个问题。解决不了问题。
你说Anchors 属性只对子窗口有意义可以理解,我说的,新建工程,不管怎么样(有用或没用),form的anchors是可以改动的(默认是left,top啊),但是我这个项目的form的anthors属性竟然改不动,改动了,又回复称原来的样子【left,top,right,bottom】。
#10
复制过去没问题,但是好像一般这样得名字匹配会很危险,挨个名字和属性不会复制过去吧?然后在工程里整个替代可是个大工程。
#11
名字和属性也会跟随过去的,但事件不会复制过去,所以复制后,要在原有的窗体中看个个控件都有哪些事件,然后在新窗体中依次建立事件,复制事件处理函数的代码,这个过程可以借机大致了解原有系统的思路,看看原有系统的问题出在哪里
#12
1000多万行的代码量,怕怕,这个弄法工作量要吓死人。可是我好像没有别的办法了,再看看,实在不行再这样吧。感觉一个窗口重写的问题,应该就是某个属性或者某个函数造成了“反正我就是要最大化”的效果的啊(通过对resize重写产生闪烁推断的出),不至于那么费劲,想法怕跑偏了。
#13
很明显,你Form的Align属性设置的是alClient
#14
结贴,果真是Form的Align属性的问题,回复默认即可。感谢妖哥,还是经验很重要,这么点小问题纠结了我一天。也感谢dataxdata的帮助。 其实吧,这1000万的代码量,动则狠危险,还是咱做事的方式跑偏了。不熟悉平台,其实应该新建一个简单的案例,通过比较,发现问题(既然都猜出了是某个属性的问题),可以更方便 快捷的解决的,希望对大家有所帮助吧。
万幸,还是通过你两的帮助,没跑偏方向。感谢。以后有机会还要多多请教大侠才是啊。至此,致敬。--
#1
不就是调整 Anchors 属性么。
#2
新建一个窗体,把原来的小控件一个个复制过去,放弃原来的窗体
#3
修改所有控件的Anchors 为默认属性
#4
不就是调整 Anchors 属性么。
"Anchors是确保该控件与它的父控件的相对位置保持不变,即使父控件改变大小"
现在是外面这个大窗体不能改变大小,总是要回复最大化(所以resize会造成闪烁),aNCHORS能造成这种效果?
从这个理论去思考,那只能看看,这个大窗体外面是不是还有他的父控件(晕,麻烦啊,这工具到底怎么用,不习惯各种窗操作,这些功能窗体都放哪了?)
4楼那兄弟说的修改所有控件的anchors,如果有用,那就是因为里面子窗体的原因会导致父窗体的不能改变大小位置,也在尝试中。
3楼那倒是个好主意,那工程部大了去了。。。。
#5
新建一个窗体,把原来的小控件一个个复制过去,放弃原来的窗体
这倒是个号主意。。就是,那工程大了去了。。。有什么原因,比如属性设置,或者某个函数,会造成窗口最大化,不让修改的呢
#6
经过修改调整 Anchors 属性尝试,是有点奇怪的发现,外面那个大窗口的Anchors 属性竟然不能修改,修改完,保存,编译,重新打开,又回复到了原来的所有(left,top,right,bottom)。我就想是不是这工程有问题呢,这不让修改,然后对其他属性,比如显示标题 caption修改,竟然能成功,那为什么 Anchors 属性不能修改,这算什么事?
#7
Anchors 属性只对子窗口有意义。至于你说的“外面那个大窗口”,我猜你说的是Form吧?
把Form的BorderStyle属性设置成bsSizeable就可以拖动更改大小了。
把Form的BorderStyle属性设置成bsSizeable就可以拖动更改大小了。
#8
选中底层的大控件,比如Panel之类,复制的时候上面的小控制都直接跟过去了,不用一个个复制
#9
Anchors 属性只对子窗口有意义。至于你说的“外面那个大窗口”,我猜你说的是Form吧?
把Form的BorderStyle属性设置成bsSizeable就可以拖动更改大小了。
回复: 这个属性本来就是bsSizeable没问题,不是这个问题。解决不了问题。
你说Anchors 属性只对子窗口有意义可以理解,我说的,新建工程,不管怎么样(有用或没用),form的anchors是可以改动的(默认是left,top啊),但是我这个项目的form的anthors属性竟然改不动,改动了,又回复称原来的样子【left,top,right,bottom】。
#10
选中底层的大控件,比如Panel之类,复制的时候上面的小控制都直接跟过去了,不用一个个复制
复制过去没问题,但是好像一般这样得名字匹配会很危险,挨个名字和属性不会复制过去吧?然后在工程里整个替代可是个大工程。
#11
名字和属性也会跟随过去的,但事件不会复制过去,所以复制后,要在原有的窗体中看个个控件都有哪些事件,然后在新窗体中依次建立事件,复制事件处理函数的代码,这个过程可以借机大致了解原有系统的思路,看看原有系统的问题出在哪里
#12
名字和属性也会跟随过去的,但事件不会复制过去,所以复制后,要在原有的窗体中看个个控件都有哪些事件,然后在新窗体中依次建立事件,复制事件处理函数的代码,这个过程可以借机大致了解原有系统的思路,看看原有系统的问题出在哪里
1000多万行的代码量,怕怕,这个弄法工作量要吓死人。可是我好像没有别的办法了,再看看,实在不行再这样吧。感觉一个窗口重写的问题,应该就是某个属性或者某个函数造成了“反正我就是要最大化”的效果的啊(通过对resize重写产生闪烁推断的出),不至于那么费劲,想法怕跑偏了。
#13
回复: 这个属性本来就是bsSizeable没问题,不是这个问题。解决不了问题。
你说Anchors 属性只对子窗口有意义可以理解,我说的,新建工程,不管怎么样(有用或没用),form的anchors是可以改动的(默认是left,top啊),但是我这个项目的form的anthors属性竟然改不动,改动了,又回复称原来的样子【left,top,right,bottom】。
很明显,你Form的Align属性设置的是alClient
#14
回复: 这个属性本来就是bsSizeable没问题,不是这个问题。解决不了问题。
你说Anchors 属性只对子窗口有意义可以理解,我说的,新建工程,不管怎么样(有用或没用),form的anchors是可以改动的(默认是left,top啊),但是我这个项目的form的anthors属性竟然改不动,改动了,又回复称原来的样子【left,top,right,bottom】。
很明显,你Form的Align属性设置的是alClient
结贴,果真是Form的Align属性的问题,回复默认即可。感谢妖哥,还是经验很重要,这么点小问题纠结了我一天。也感谢dataxdata的帮助。 其实吧,这1000万的代码量,动则狠危险,还是咱做事的方式跑偏了。不熟悉平台,其实应该新建一个简单的案例,通过比较,发现问题(既然都猜出了是某个属性的问题),可以更方便 快捷的解决的,希望对大家有所帮助吧。
万幸,还是通过你两的帮助,没跑偏方向。感谢。以后有机会还要多多请教大侠才是啊。至此,致敬。--