程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> DELPHI中自適應表單的實現

DELPHI中自適應表單的實現

編輯:Delphi

我們知道,屏幕分辨率的設置影響著表單布局,假設你的機器上屏幕分辨率是800*600,而最終 要分發應用的機器分辨率為640*480,或1024*768,這樣你原先設計的表單在新機器上勢必會 走樣。這時你一定希望表單能自己適應不同的分辨率,下面就有兩種方法可供你參考。

一、根據新的分辨率自動重畫表單及控件

先在表單單元的Interface部分定義兩個常量,表示設計時的屏幕的寬度和高度(以像素為 單位)。在表單的Create事件中先判斷當前分辨率是否與設計分辨率相同,如果不同,調用表 單的SCALE過程重新能調整表單中控件的寬度和高度。

Const
Orignwidth=800;
Orignheight=600;
procedureTForm1.FormCreate(Sender:TObject);
begin
scaled:=true;
if(screen.width<>orignwidth)then
begin
height:=longint(height)*longint
(screen.height)divorignheight;
width:=longint(width)*longint
(screen.width)divorignwidth;
scaleby(screen.width,orignwidth);
end;
end;

SCALE過程在調整控件寬度和高度的同時,也自動調整控件字體的大小,以適應新的分辨率, 但美中不足的是它並不改變控件的頂點坐標位置,也就是說,該過程不改變控件之間的相對 位置關系。要想調整控件之間的選隊相對位置,還需要自己編程實現,有興趣的讀者可試一 試。

二、將機器分辨率更改為設計時的分辨率

這種方法不改變表單本身,而是將屏幕分辨率更改為與表單設計時用到的分辨率相同。它需要用到WINDOWSAPI函數EnumDisplaySettings和ChangeDisplaySettings,前者取當前顯示模式信息,後者則更改顯示設置,具體參數的含義請參見DELPHI幫助。設計時寬度常量 和高度常量的定義如方法一。

procedureTForm1.FormCreate(Sender:TObject);
var
devmode:tDevicemode;
begin
ifscreen.width<>orignwidththen
begin
ifEnumDisplaySettings(nil,0,devmode)then
begin
devmode.dmfields:=dm_pelswidthORdm_pelsheight;
devmode.dmpelswidth:=orignwidth;{寬度}
devmode.dmpelsheight:=orignheight;{高度}
ChangeDisplaySettings(devmode,0);{更改設置}
end;
end;
end;

以上兩種方法在WINDOWS95+DELPHI3.0環境下均已通過,二者相比,前者是主動適應,後者則是被動適應。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved