如何使窗口大小改变了,控件大小也同比例改变100分 同题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一、 根 据 新 的 分 辨 率 自 动 重 画 表 单 及 控 件 ---- 先 在 表 单 单 元 的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 beginif 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;---- 以 上 两 种 方 法 在 相 比, 前 者 是 主 动 适 应, 后 者 则 是 被 动 适 应。 Anchors属性:[akLeft,akTop,akRight,akBottom] 不能达到要求,我记得在onresize写入代码就可以了好像是在创建时记录控件的height,width,然后在onresize的时候用某种算法就可以进行自动调整了,具体怎么样的忘掉了呀……还有没有知道 的? to happyzsl的办法不错,不过还是有缺陷!!还有没有更好的办法? 把控件都放在Panel上,然后都把align设为alclient这样比较简单。但控件多就麻烦了!!! 看错了,我以为你要根据分辨率进行调整呢。Anchors属性:[akLeft,akTop,akRight,akBottom]都为true或者 都为false试一下这几个属性的组合可好用了。得回家了。 不同意楼上。我试过了,效果很差。很得用onresize 呵呵,我都是用OnResize,当然很痛苦的了 用Algin属性 AlClient:充满 AlRight:左对齐 AlLeft: Altop: Albuttom:下对齐 探讨intraWeb与ActiveX...大牛们指点 怎样实现在GRID中的行合并问题? 制作一个window service程序 一个头疼的问题:关于ExcelApplication的另存为功能 急!大哥门救我啊,TREEVIEW问题 汉语拼音问题,高分求解。急急急,在线等!~! 来交友吧 如何修改另外一个应用程序窗口显示的文字?? !如何使DBGrid某列所有的内容显示为“*”,但并不真正改变字段的内容! 天哪.有人说用Delphi已经找不到工作了,为什么会这样,请这里的高手给我们这些低手点鼓励和建议吧 ftp的问题 sql导出TXT文件,字段无法对齐
---- 先 在 表 单 单 元 的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;---- 以 上 两 种 方 法 在 相 比, 前 者 是 主 动 适 应, 后 者 则 是 被 动 适 应。
[akLeft,akTop,akRight,akBottom]
还有没有知道 的?
还有没有更好的办法?
这样比较简单。但控件多就麻烦了!!!
Anchors属性:
[akLeft,akTop,akRight,akBottom]
都为true或者 都为false试一下
这几个属性的组合可好用了。
得回家了。
我都是用OnResize,
当然很痛苦的了
AlClient:充满
AlRight:左对齐
AlLeft:
Altop:
Albuttom:下对齐