?? autoxize.htm
字號:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>DELPHI中自適應表單的實現</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<p align="center"> <font color="#0000c0"></p>
<h2 align="center">DELPHI 中 自 適 應 表 單 的 實 現 </font></h2>
<h3 align="center">石 家 莊 軍 械 工 程 學 院 五 系 王 俊 </h3>
<p><font color="#ffffff">----</font> 我 們 知 道, 屏 幕 分 辨 率 的 設 置
影 響 著 表 單 布 局, 假 設 你 的 機 器 上 屏 幕 分<br>
辨 率 是800*600, 而 最 終 要 分 發 應 用 的 機 器 分 辨 率 為640*480,
或1024*768, 這 樣 你<br>
原 先 設 計 的 表 單 在 新 機 器 上 勢 必 會 走 樣。 這 時 你 一 定
希 望 表 單 能 自 己 適 應<br>
不 同 的 分 辨 率, 下 面 就 有 兩 種 方 法 可 供 你 參 考。 </p>
<p><font color="#ffffff">----</font> 一、 根 據 新 的 分 辨 率 自 動 重 畫
表 單 及 控 件 </p>
<p><font color="#ffffff">----</font> 先 在 表 單 單 元 的Interface 部 分 定 義
兩 個 常 量, 表 示 設 計 時 的 屏 幕 的 寬 度 和 高<br>
度( 以 像 素 為 單 位)。 在 表 單 的Create 事 件 中 先 判 斷 當 前
分 辨 率 是 否 與 設 計 分<br>
辨 率 相 同, 如 果 不 同, 調 用 表 單 的SCALE 過 程 重 新 能 調 整
表 單 中 控 件 的 寬 度<br>
和 高 度。 </p>
<pre>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;</pre>
<p><font color="#ffffff">----</font> SCALE 過 程 在 調 整 控 件 寬 度 和 高 度
的 同 時, 也 自 動 調 整 控 件 字 體 的 大 小,<br>
以 適 應 新 的 分 辨 率, 但 美 中 不 足 的 是 它 并 不 改 變 控 件
的 頂 點 坐 標 位 置, 也<br>
就 是 說, 該 過 程 不 改 變 控 件 之 間 的 相 對 位 置 關 系。 要
想 調 整 控 件 之 間 的 選<br>
隊 相 對 位 置, 還 需 要 自 己 編 程 實 現, 有 興 趣 的 讀 者 可
試 一 試。 <br>
</p>
<p><font color="#ffffff">----</font> 二、 將 機 器 分 辨 率 更 改 為 設 計
時 的 分 辨 率 </p>
<p><font color="#ffffff">----</font> 這 種 方 法 不 改 變 表 單 本 身, 而
是 將 屏 幕 分 辨 率 更 改 為 與 表 單 設 計 時 用 到<br>
的 分 辨 率 相 同。 它 需 要 用 到WINDOWS API 函 數EnumDisplaySettings 和ChangeDisplaySettings,
前<br>
者 取 當 前 顯 示 模 式 信 息, 后 者 則 更 改 顯 示 設 置, 具 體
參 數 的 含 義 請 參 見<br>
DELPHI 幫 助。 設 計 時 寬 度 常 量 和 高 度 常 量 的 定 義 如 方 法
一。 </p>
<pre>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;</pre>
<p><font color="#ffffff">----</font> 以 上 兩 種 方 法 在WINDOWS 95+DELPHI 3.0 環
境 下 均 已 通 過, 二 者 相 比, 前 者 是<br>
主 動 適 應, 后 者 則 是 被 動 適 應。 </p>
</body>
</html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -