请问怎么解决不同分辨率下窗体的显示问题?

yythink 2003-07-06 09:11:52
我的程序是在1024*768下写的,结果在600*800下窗体都变样了,控件乱七八糟,出了一堆滚动条,请问怎么解决呀?多谢了
...全文
55 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovelymelon 2003-07-07
  • 打赏
  • 举报
回复
Orignwidth=800;
Orignheight=600;
是程序在设计时的屏幕宽度和高度
lovelymelon 2003-07-07
  • 打赏
  • 举报
回复
如果不行每个窗体都加程序,可以在程序的主窗体,如果有登录界面或显示界面,在登录界面或显示界面中加入代码,强制运行该程序的计算机的分辨率调整到设计程序时的分辨率


Const
Orignwidth=800;
Orignheight=600;

procedure TForm1.FormCreate(Sender: TObject);
var
devmode:tDevicemode;
begin
if screen.width<>orignwidth then
begin
if EnumDisplaySettings(nil,0,devmode) then
begin
devmode.dmfields:=dm_pelswidth OR dm_pelsheight ;
devmode.dmpelswidth:=orignwidth; {宽度}
devmode.dmpelsheight:=orignheight;{高度}
ChangeDisplaySettings(devmode,0); {更改设置}
end;
end;
end;

黄海之滨渔夫 2003-07-07
  • 打赏
  • 举报
回复
size控件
星星 2003-07-06
  • 打赏
  • 举报
回复
好像有个SetScreen函数的!
yythink 2003-07-06
  • 打赏
  • 举报
回复
好像不行呀 是不是每个窗体都要加呀
我用
scaled:=true;
if (screen.width<>orignwidth) then
begin
scaleby(screen.width , orignwidth);
end;
主窗口好像可以了,不过子窗口都不行
ollea 2003-07-06
  • 打赏
  • 举报
回复
Const
Orignwidth=800;
Orignheight=600;

procedure TForm1.FormCreate(Sender: TObject);
begin
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;
mrtxc 2003-07-06
  • 打赏
  • 举报
回复
Scaled:=True;

5,930

社区成员

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

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