分辨率问题(45分)

  • 主题发起人 主题发起人 Uncle Li
  • 开始时间 开始时间
U

Uncle Li

Unregistered / Unconfirmed
GUEST, unregistred user!
DELPHI开发的系统,如何自动识别/适应显示器分辩率?
开发时用台式机(800x600),系统实施时用notebook(1024x768),结果界面全部变形,应该如何处理?谢谢!
 
简单点用如下就可以了
Screen.Width
Screen.Height
 
要得到显示器的分辨率,由下列程序得到:
var
x:longint;
a:string;
begin
x := GetSystemMetrics(SM_CXSCREEN);
Str(x,a);
Label1.Caption := '显示器水平分辨率' + a;
x := GetSystemMetrics(SM_CYSCREEN);
Str(x,a);
Label2.Caption := '显示器垂直分辨率' + a;
end

以下例程,不仅能动态改变FORM的大小,而且字号的大小也随着变化

const height:=600; //根据你设计时的屏幕分辩率设定
width := 800;

var
i :integer;
begin
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;

for i := componentCount - 1 downto 0 do
with components do
begin
if GetPropInfo(ClassInfo, 'font') <> nil then
font.size := (screen.width DIV screenwidth) * font.size;
end;
end;

将这个过程放入FORM.CREATE事件里
USES加入单元typinfo
 
同意楼上的,你首先判断当前的屏幕分辨率,然后如果你 需要动态修改的话
在 编写修改分辨率的代码
 
两种方法:
1、将窗体的最大Width、Height限制死——不是很友好
2、让控件适应窗体改变——要多花一些时间
 
每个窗体都要写这样的代码???
 
后退
顶部