怎样才能使程序在不同的分辨率下能显示正常?
现在我写的程序是win2000+delphi7,分辨率是1024X768,程序的字体是:宋体+小五号,在写程序那台电脑上把分辨设置为800×600也是正常的,到别的电脑上是800×600的就是不正常,是1024×768的也是正常的,发布后在win98下分辨率是800X600,窗体上的控件有一部分不能显示出来。窗体都出现滚动条,请问怎么解决? 问题点数:80、回复次数:10Top
1 楼yuanscar(塑料树)回复于 2005-09-05 19:50:08 得分 10
呵呵,比较困难哦,
首先是窗口上所有的控件用panel分组排版,然后所有控件的位置和大小用代码来按照窗口大小的比例进行设置,不能用绝对位置Top
2 楼qinzuozhang(晨曦)回复于 2005-09-05 19:56:43 得分 0
不是吧,有那么烦麻吗?Top
3 楼quicksand201(流沙)回复于 2005-09-05 20:31:44 得分 5
还有更麻烦的,在相同色深相同的分辨率在不同的显示器上显示也是不同的,至少我的程序是这样的,只好凑合着用!Top
4 楼winter_6677(米子)回复于 2005-09-05 20:33:54 得分 30
如果我没理解错的话,我认为该这样解决:
首先计算当前的分辨率,然后根据当前的分辨率来调整控件和窗口的大小。
如:以下是一个调试通过的小程序。
//根据当前分辨率调整treeview和scrolbox的大小
x:=integer(GetSystemMetrics(SM_CXSCREEN)); //取现在的分辨率
posy:=integer(GetSystemMetrics(SM_CySCREEN));
form1.TreeView1.Width:=integer(form1.TreeView1.Width*x div 800);
form1.TreeView1.Height:=integer(form1.TreeView1.Height*posy div 600);
form1.ScrollBox1.width:=integer(form1.scrollbox1.Width*x div 800);
form1.scrollbox1.height:=integer(form1.scrollbox1.Height*posy div 600);
form1.scrollbox1.Left:=integer(form1.scrollbox1.Left*x div 800);
form1.Panel1.width:=integer(form1.Panel1.Width*x div 800);
此为主要代码Top
5 楼hhzqf1980(hh)回复于 2005-09-06 09:05:58 得分 5
最好是把窗口上所有的控件用panel分组排版Top
6 楼gxgyj(杰克逊)回复于 2005-09-06 09:15:48 得分 10
窗体与窗体上的控件随分辨率的改变而相应改变大小,如何实现?
http://community.csdn.net/Expert/topic/3752/3752676.xml?temp=.3257715
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
不过俺一惯的做法,是用800*600设计,不管别人用800*600还是1024*768都能正常显示
(现在应该不会有谁用640*480吧!)Top
7 楼wtg476(起飞)回复于 2005-09-06 17:40:38 得分 0
楼上的做法好呀
Top
8 楼hr168(Ocb.Hr)回复于 2005-09-07 10:09:06 得分 5
你属性编辑器里把Form的Scaled属性设置为FalseTop
9 楼yuanscar(塑料树)回复于 2005-09-07 12:46:30 得分 10
都按照800*600万一用户要你改窗口大小怎么办?现在显示器大部分都大,提出这样的要求是很合理的,看似完美的解决方案其实根本没有使用的价值。
有的时候该写代码计算的就非得写,没有办法的事情,要不然怎么说程序员作的是体力劳动呢?Top
10 楼jackie168(http://soft.eastrise.net)回复于 2005-09-08 07:55:34 得分 5
http://community.csdn.net/Expert/topic/4248/4248928.xml?temp=.6211817Top




