我的程序是在2000server 800*600 16位彩色的显示环境设计的,可是到了2000pro 17寸 1024*768下就完了(100分)

  • 主题发起人 主题发起人 netnice
  • 开始时间 开始时间
N

netnice

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序是在2000server 800*600 16位彩色的显示环境设计的,
可是到了2000pro 17寸 1024*768下就完了
所有的窗体都出现了滚动条,控件都没显示完全。
这是为什么啊?要设置窗体的什么属性。
我的程序所有的窗体的font属性里我都设置的是宋体 9 字符集是chinese-gb2312
是不是和这个有关??/

 
看来我要抓个图才能说明问题。
 
这不奇怪。不过你可以试一下把窗体和空间的AutoSize属性改为True。
 
AutoScroll := false
试试
 
窗体可以固定大小,各控件的 Align 属性可以配置
 
最好开始测试分辨率,和设计时不一致时同比例的更改form的大小
 
很简单。使用:
AutoScroll := false
就可以了

另外,可能17寸 1024下改了字体大小,如120dpi,如是这样,设置窗体的
Scaled = False

即可
 
把字体设为默认的试试!
 
我也遇到过这样的问题,如果你选用了汉字并设置了汉字字体如:宋体 9 号,
字符集一定要保证是chinese-gb2312,并且是所有控件的font属性都要保证,仔细再检查一遍看是否有丢掉的。
如果字符集设置不是chinese-gb2312,在Win98也会出现类似的情况。

 
我给你一段代码一切都可以解决的
function SetSize(X, Y: word): BOOL;
var
lpDevMode: TDeviceMode;
begin
Result := EnumDisplaySettings(nil, 0, lpDevMode);
if Result then
begin
lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT;
lpDevMode.dmPelsWidth := X;
lpDevMode.dmPelsHeight := Y;
Result := ChangeDisplaySettings(lpDevMode, 0) = DISP_CHANGE_SUCCESSFUL;
end;
end;
begin
if not SetSize(800, 600) then
showMessage('我的程序要在800*600下执行,按确定后变成800*600');
//设置为800*600
SetSize(800, 600);
end;

祝好运
 
hurryman
谢谢。可是我这个是个软件。不是游戏软件。改用户的分辨率不太好吧。
 
这是个普遍问题,比较好的解决办法就是自己根据分辨率自动调整
各个控件的相对位置和大小,按比例的进行放缩
 
字符集一定要保证是chinese-gb2312,并且是所有控件的font属性都要保证是宋体
 
将主FormFont设为宋体9号字,然后所有控件的parentfont设为true就行了
 
很简单。使用:
AutoScroll := false
就可以了

另外,可能17寸 1024下改了字体大小,如120dpi,如是这样,设置窗体的
Scaled = False

即可
 
同意only you,
这个确实是个头疼问题, 要么更改显示器分辨率, 要么自己做内功, 根据分辨率自动调整
各个构件的相对位置和大小,动态调整, 这个过程在Form.create事件中完成

要窗体自动适应桌面倒是现成, 可是窗体上的各个构件却不会买这个帐, 只能自己编写代
码来完成. 不过挺烦心的.
AutoScroll := false让滚动条消失了, 但是超出范围的构件却再也不会出现了.

不知下面的还又什么高招, 我且看看下面的弟兄怎么说. 呵呵, 我也关注这个问题.
希望能看到最上乘的----葵花宝典之Form与构件自动适应法.
 
我有为些很头痛!
 
呵呵 , 我现在倒是解决了这个问题, 不过有点笨, 不值一提, 呵呵.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部