说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

DELPHI 中 自 适 应表 单 的 实 现

HTML文档下载 WORD文档下载 PDF文档下载
DELPHI 中 自 适 应表 单 的 实 现

---- 一、 根 据 新 的 分辨 率 自 动 重 画 表 单 及 控 件

---- 先 在 表 单 单 元 的Interface 部 分 定 义 两 个 常 量, 表 示 设 计 时 的 屏幕 的 宽 度 和 高 度( 以 像 素 为 单 位)。 在表 单 的Create 事 件 中 先 判 断 当 前 分 辨 率 是否 与 设 计 分 辨 率 相 同, 如 果 不 同, 调 用表 单 的SCALE 过 程 重 新 能 调 整 表 单 中 控 件的 宽 度 和 高 度。

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;

---- SCALE 过 程 在 调 整控 件 宽 度 和 高 度 的 同 时, 也 自 动 调 整控 件 字 体 的 大 小,以 适 应 新 的 分 辨 率,但 美 中 不 足 的 是 它 并 不 改 变 控 件 的 顶点 坐 标 位 置, 也 就 是 说, 该 过 程 不 改 变控 件 之 间 的 相 对 位 置 关 系。 要 想 调 整控 件 之 间 的 选 队 相 对 位 置, 还 需 要 自己 编 程 实 现, 有 兴 趣 的 读 者 可 试 一 试。

---- 二、 将 机 器 分 辨率 更 改 为 设 计 时 的 分 辨 率

---- 这 种 方 法 不 改 变表 单 本 身, 而 是 将 屏 幕 分 辨 率 更 改 为与 表 单 设 计 时 用 到 的 分 辨 率 相 同。 它需 要 用 到WINDOWS API 函 数EnumDisplaySettings 和ChangeDisplaySettings,前 者 取 当 前 显 示 模 式 信 息, 后 者 则 更改 显 示 设 置, 具 体 参 数 的 含 义 请 参 见 DELPHI 帮 助。 设 计 时 宽 度 常 量 和 高 度 常 量的 定 义 如 方 法 一。

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;

---- 以 上 两 种 方 法 在WINDOWS 95+DELPHI 3.0 环 境 下 均 已 通 过, 二 者 相 比,前 者 是 主 动 适 应, 后 者 则 是 被 动 适 应。

备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘