网站建设| 数据库类| 图形图象| 程序设计| 现代办公| 操作系统| 考试认证| 网络技术| 软件工程| 电脑相关| 文学作品
网站开发| 网页制作| 操作系统| 图象图形| 考试认证| 数据库类| 程序设计| 硬件技术| 现代办公| 网络技术| 笑话频道
 
您的位置: 电脑书库首页-> 电脑文摘-> 程序设计-> Delphi/Pascal-> DELPHI 中 自 适 应 表 单 的 实 现

DELPHI 中 自 适 应 表 单 的 实 现
作者:王俊 来源:InterNet 加入时间:2004-11-22
相关文章
  • 个性化表单五技巧
  • 相关书籍:

    DELPHI 中 自 适 应 表 单 的 实 现

    石 家 庄 军 械 工 程 学 院 五 系 王 俊

    ---- 我 们 知 道, 屏 幕 分 辨 率 的 设 置 影 响 着 表 单 布 局, 假 设 你 的 机 器 上 屏 幕 分
    辨 率 是800*600, 而 最 终 要 分 发 应 用 的 机 器 分 辨 率 为640*480, 或1024*768, 这 样 你
    原 先 设 计 的 表 单 在 新 机 器 上 势 必 会 走 样。 这 时 你 一 定 希 望 表 单 能 自 己 适 应
    不 同 的 分 辨 率, 下 面 就 有 两 种 方 法 可 供 你 参 考。

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

    ---- 先 在 表 单 单 元 的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 环 境 下 均 已 通 过, 二 者 相 比, 前 者 是
    主 动 适 应, 后 者 则 是 被 动 适 应。


    [文章录入员:fightter]

    相关文章
  • 个性化表单五技巧
  • 相关书籍:
    本站推荐内容

    近期主机类热搜关键词:
    美国服务器 美国服务器租用 海外服务器租用 国外服务器租用

    Delphi/Pascal
    C/C++/VC
    C++Builder
    Basic/VB类
    Delphi/Pascal
    Java编程
    FORTRAN
    其它
    电脑教程阅读排行
    ·DELPHI下的多线程程序设计(...
    ·Delphi与Excel的亲密接...
    ·Delphi实现串口通信的常用的...
    ·Delphi中初始化.Ini文件...
    ·Delphi中用于读写(I/O)...
    ·谈谈Delphi中的类和对象
    ·Delphi编译错误中文手册
    ·Delphi中关于TApplic...
    ·OPENGL图形程序设计
    ·SQL的基本操作