控件在不同的分辩率下的位置问题,急!谢谢!
在一个Form上有5个Panel,上面三个Panel设置Align为alTop,第四个为alClient,最下面一个为alBottom,现在的问题是我是在显示器 1024*768下设置的位置大小,在这个情况下,位置是很好的,但现在调整为800*600,这样位置就不对了,主要是部分不能显示了,主要是Panel4(设为alClient)但下面的Panel挡住了,旁边又没有流动条,这如何设置?
还有就是虽然是1024*738,但把Windows的图标调大后,也会出现这种情况的,请问如何解决?
谢谢!
问题点数:100、回复次数:12Top
1 楼netsys2(来电!)回复于 2005-08-31 13:10:21 得分 90
论坛FAQ:
Q : 为什么程序在不同的机器上运行时,窗口上的控件的位置和大小会不同?
主要解答者: kingcaiyao 提交人: ytjoh
感谢:
审核者: jishiping 社区对应贴子: 查看
A :
最近作了一个程序是在2000下完成的不知为何到了98下却完全走样了。按钮等
控件比原来都大了好多。这是为何?有人建议我在98下再编译一次,除了这个
建议是否有其他好的办法
---------------------------------------------------------------
设置你所有窗体的Scaled属性为false;
动态进行调整窗口的大小,用函数ScaleByTop
2 楼constantine(飘遥的安吉儿)回复于 2005-08-31 13:25:37 得分 2
同意Top
3 楼FlySkyFree(飞)回复于 2005-08-31 14:06:03 得分 2
能否说的详细点?Top
4 楼87607047()回复于 2005-08-31 14:17:37 得分 0
不对呀,我使用的是MDI窗口,在用ScaleBy还是不对呀,虽然Panel4大部分控件是可以显示出来了,但Panel4(设为alClient)还是但下面的Panel挡住了,旁边又没有流动条,这如何设置?
Panel从上到下分别为Panel1,Panel2,Panel3,Panel4,Panel5Top
5 楼87607047()回复于 2005-08-31 14:21:14 得分 0
就是一个界面就5个Panel,每个Panel上有几个Edit,Label,ComboBox,Button,还有一个StatusBar
Top
6 楼netsys2(来电!)回复于 2005-08-31 14:58:06 得分 0
把你的主窗口等都按FAQ说的设置。Top
7 楼87607047()回复于 2005-08-31 15:00:47 得分 0
我在主窗口也已经这样设置了!
const ScreenHeight=1024;
const ScreenWidth=768;
int intX,intY;
mainform->Scaled=true;
intX=GetSystemMetrics(SM_CXSCREEN);
intY=GetSystemMetrics(SM_CYSCREEN);
if((intX!=ScreenHeight)|(intY!=ScreenWidth))
{
//调用过程ScaleBy,并按intX/ScreenHeight的比例来放缩窗体上的控件和字体
ScaleBy(intX,ScreenHeight);
}
问题还是这样呀!Top
8 楼netsys2(来电!)回复于 2005-08-31 16:54:25 得分 0
把你的工程发给我看看。
mike888@tom.comTop
9 楼liu_jun_ivan(狼近西坡)回复于 2005-08-31 17:40:27 得分 5
如果是动态改变分辨率造成的,则唯有处理窗口的OnResize事件才是最完美的做法;如果不是的话,最好OnCreate时取Screen->Width和Screen->Height,根据这些数据来动态计算并布局,才是最完美的。其实也不麻烦,能处理常见的几种分辨率就可以了。Top
10 楼hehe169(hehe)回复于 2005-08-31 20:55:07 得分 1
同意!
其实根据不同分辨率进行动态计算是最好的,程序退出时再恢复即可Top
11 楼netsys2(来电!)回复于 2005-09-01 10:09:12 得分 0
你的工程看了,不再需要多的改动。
虽然在运行时修改屏幕设置会使你的子窗口界面中有些东西没有显示,
但关闭它,再重新显示子窗口,又恢复正常。
实际工作时没有人会在运行时去更改屏幕设置!
你需要做的工作是重新把子窗口排版,让它更紧凑些。
---------------------
你最大的问题:
你的MIDI子窗口在800*600本来就显示不完整!
你自己把屏幕调整为800*600看看,全屏幕显示很多栏目都显示不完,运行时更
不可能显示完。
重新排版吧!Top
12 楼87607047()回复于 2005-09-01 12:03:07 得分 0
是的,我看在1024*768下能完全显示出来,以为到800*600下能自动调整过来,这下我清楚了!谢谢!Top




