如何让开发出来的程序自动适应计算机的分辨率(50分)

  • 主题发起人 主题发起人 cqsssco
  • 开始时间 开始时间
C

cqsssco

Unregistered / Unconfirmed
GUEST, unregistred user!
我在800*600下为了客户开发出一个一管理系统
可客户只在先下640*480下使用
而的程序在此之下完全走型了
请问有什么办法调整
 

辨别分辨率
要得到显示器的分辨率,由下列程序得到:
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;




动态修改显示器分辨率
Windows提供给我们两个API函数,可以动态调整显示器的分辨率,他们是EnumDisplaySettings() 和ChangeDisplaySettings(),下面这个例子就是了
function DynamicResolution(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;

procedure TForm1.Button1Click(Sender: TObject);
begin
if DynamicResolution(640, 480) then
ShowMessage('Now is 640*480');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if DynamicResolution(800, 600) then
ShowMessage('Now is 800*600');
end;

 
cpsssco先生:
我的分数太少了,恐怕前300名也保不住了。
救我。
 
动态修改客户的屏幕分辩率,我总觉得不好.
以下例程,不仅能动态改变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 - 1do
wnto 0do

with componentsdo

begin

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

font.size := (screen.width DIV screenwidth) * font.size;
end;

end;

将这个过程放入FORM.CREATE事件里
USES加入单元typinfo,
 
如何让界面适应不同的字体与分辨率http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=176716
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部