100分收购!为什么win2k下编写的程序,在win98下运行这么难看?

workboy 2003-08-15 09:03:48
为什么win2k下编写的程序,在win98下运行这么难看?特别是label botton他们的位置变化?
...全文
18 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
internetcsdn 2003-09-06
  • 打赏
  • 举报
回复
up
cow8063 2003-08-15
  • 打赏
  • 举报
回复

implementation

const

ScreenWidth: LongInt = 800; {I designed my form in 800x600 mode.}

ScreenHeight: LongInt = 600;

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);

begin

scaled := true;

if (screen.width <> ScreenWidth) then

begin

height := longint(height) * longint(screen.height) DIV ScreenHeight;

width := longint(width) * longint(screen.width) DIV ScreenWidth;

scaleBy(screen.width, ScreenWidth);

end;

end;

下面是解决字体大小的代码:

USES typinfo; {Add this to your USES statement.}

var

i: integer;

begin

for i := componentCount - 1 downto 0 do

with components[i] do

begin

if GetPropInfo(ClassInfo, 'font') <> nil then

font.size := (NewFormWidth DIV OldFormWidth) * font.size;

end;

end;

下面的函数可以解决问题:

Form:需要调整的Form,OrgWidth:开发时屏幕的宽度,OrgHeight:开发时屏幕的高度。

注意:需要把Form的Scaled设置为True。

procedure AdjustForm(Form: TForm; const OrgWidth, OrgHeight: integer);

begin

with Form do

begin

Width := Width * Screen.Width div OrgWidth;

Height := Height * Screen.Height div OrgHeight;

ScaleBy(Screen.Width, OrgWidth);

end;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

AdjustForm(Self,1280,1024);

end;

workboy 2003-08-15
  • 打赏
  • 举报
回复
我实验以下,
微雪缤纷 2003-08-15
  • 打赏
  • 举报
回复
指定字体后,问题应该不大了。
kkk2000 2003-08-15
  • 打赏
  • 举报
回复
主窗体FONT设置为:宋体,9号字。
其它控件的ParentFont属性默认值为:true
不要用delphi的默认设置。
shuixin13 2003-08-15
  • 打赏
  • 举报
回复
个人认为应该是你的字符集的问题,


强烈同意 木鱼
hkbarton 2003-08-15
  • 打赏
  • 举报
回复
主要还是字体和字符集的原因
hkbarton 2003-08-15
  • 打赏
  • 举报
回复
主要还是字体和字符集的毛病
wypepsi 2003-08-15
  • 打赏
  • 举报
回复
如果不愿意修改的话 可以分别在不同的系统编译 然后在程序启动的时候判断操作系统的类型来选择启动的程序 反正delphi的编译速度大家都有信心三 ^_^
mrfanghansheng 2003-08-15
  • 打赏
  • 举报
回复
主要是字符集不相容!将窗体的font的CHARSET属性设为DEFAULT_CHARSET或者GB2312_CHARSET再重新编译就行了
CDSoftwareWj 2003-08-15
  • 打赏
  • 举报
回复
在做程序时,一定要先修改 Form 啦什么的控件的字体

修改成 宋体 GB2312字符集 9号或10号字

就OK了
foreveryday007 2003-08-15
  • 打赏
  • 举报
回复
分辨率的改變
系統字體的變化都有可能引起

//Form's Create(Form適應其它分辨率)
procedure SetFormCreate(Sender: TForm);
begin
with Sender do
begin
Width := FrmMain.myClientWidth;
Height := FrmMain.myClientHeight;
Top := (FrmMain.myClientHeight - Height) div 2;
Left := (FrmMain.myClientWidth - Width) div 2;

Scaled := True;
if (Screen.Width <> OrignWidth) then
begin
Height := LongInt(Height) * LongInt(Screen.Height) div OrignHeight;
Width := LongInt(Width) * LongInt(Screen.Width) div OrignWidth;
ScaleBy(Screen.Width, OrignWidth);
end;
end;
end;
workboy 2003-08-15
  • 打赏
  • 举报
回复
c

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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