请问如何使界面可适应不同的分辩率,不会因为分辩率的变化使界面布局混乱
解决方案 »
- F1book中的copyrange怎么用?有人帮忙,ok的我愿出200分!
- .udl文件怎么生成
- Kingron(单身走我路……) ,你给我听着.....
- 关于查询出来的数据怎么导入到EXCEL中做报表????急盼,在线等!!!
- acess中的小数读到delphi中位数多了好多,在DBGrid中显示查询结果为正确位数该如何做?
- 数据库程序处理数据的方法问题
- 牛虻说报他的名会有很多人帮我的,试试灵不灵
- 图形控件问题-知道的快来拿分!!!
- 急,哪里有下载可以获得网上其它SQLSERVER主机的控件
- DELPHI中如何将WINDOWS全面禁止?
- 我在使用fastreport中的PrintTable控件生成报表时,如何在报表中实现动态设置报表的打印纸是A3的还是A4的?
- 如何判断一个窗体是否在屏幕最前
Rainy兄,根据分辩率动态布局窗体,那么窗体内的控件如Lable,edit等都要动态布局吗?请给两句示例代码.huojiehai兄,按800*600开发,在1024*768时窗体没什么问题,但窗体内控件的位置怎么办,不能在设计时指定吗?SonghTao兄,用align属性控制常用,但怎么我TSplitter配合不清楚,能简单说明一下吗?Randomize兄,进入系统修改参数是如何调用API的,能给这句代码吗?
一、 根 据 新 的 分 辨 率 自 动 重 画 表 单 及 控 件
先 在 表 单 单 元 的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;