如何让窗口上的控件随着窗口的放缩而改变比例?

xxy1898 2001-12-01 07:34:11

一个很常见也很简单的问题,可我不知道,惭愧呀!!
请指教:]
...全文
1097 47 打赏 收藏 转发到动态 举报
写回复
用AI写文章
47 条回复
切换为时间正序
请发表友善的回复…
发表回复
psqpp 2001-12-07
  • 打赏
  • 举报
回复
oo
txinfo 2001-12-06
  • 打赏
  • 举报
回复
To:xxy1898
zip包里面已经有一个readme文件,说得很清楚呀
1、在form上放一个TFormResizer
2、在form的oncreate事件里加上这句话
procedure TForm1.FormCreate(Sender: TObject);
begin
FormResizer1.InitializeForm;
end;
3、在form的onResize事件里加上这句话
procedure TForm1.FormResize(Sender: TObject);
begin
FormResizer1.ResizeAll;
end;
OK,编绎后看看效果吧

在那个zip包的readme文件里,它还提到了可以修改font、窗体的最小参数,或者只针对某些组件做resize修改等方法,你好好看一下吧
xxy1898 2001-12-06
  • 打赏
  • 举报
回复
to txinfo(冰炎两重天):
非常感谢你,那个readme我一见是e文的就没细看了(我对自己的英文实在没有信心),
经过你的提醒,我又认真看了那个readme,果然如你所说.......

谢谢这么多的朋友帮助我,分数马上就加!!
windofsun 2001-12-05
  • 打赏
  • 举报
回复
学习
liaokuo 2001-12-05
  • 打赏
  • 举报
回复
简单4了
在form尺寸变化事件里
改变控间位置
字节写代码了
hongshaimengxiang 2001-12-05
  • 打赏
  • 举报
回复
是不是可以计算出一个比例,
让它们(窗体和控件)同步变化。
参考一下 ,呵呵......
panther_totem 2001-12-05
  • 打赏
  • 举报
回复
不懂不懂深奥深奥.
com235 2001-12-05
  • 打赏
  • 举报
回复
____________________________?!
ljy 2001-12-04
  • 打赏
  • 举报
回复
这个问题的解决方法,是只有修改每个控件的Height,Width了当然你可以写一个控件或者是
一个共用的代码搜索窗体上你需要改变的控件类型,然后计算出原来的窗体大小和现在窗体的
大小的比率,进行调整。而且还需要两个限制你的窗体最小要保持多大,在长或宽一方改变时
另外一方你可要自己计算增大比率。也许这样还不能解决你所有的问题。
SuperRadar 2001-12-04
  • 打赏
  • 举报
回复
这个问题我以前也做过,不过和VB不同的是DELPHI的WIDTH和HEIGHT是整型,所以按比例缩放N次后组件就乱了
a_mao_gong 2001-12-04
  • 打赏
  • 举报
回复
xueyin(雪莹)
请也发一份给我吧,我也遇到这个问题了谢谢。
a_mao_gong@fm365.com
xxy1898 2001-12-04
  • 打赏
  • 举报
回复
把Anchors全设为true或者全设为false都不是我所希望的结果,
问题看来是没有那么简单的了:]
vince12 2001-12-04
  • 打赏
  • 举报
回复
你把控件的Anchors属性的aktop akleft,akRight akBottom全都设为false;就搞定了啊
chuqianyiding 2001-12-04
  • 打赏
  • 举报
回复
控件的anchor的属性怎样设置?
xxy1898 2001-12-04
  • 打赏
  • 举报
回复
to mdx(大头):
我好像并没有问分辨率改变的问题呀:]我的本意是在同一分辨率下,如果窗口被用户拖大了,
如何才能让窗口上的控件也随之改变大小和位置,不过还是非常谢谢你提供了另一个好东东!!!

to Kingron(戒网中……):
我知道您是这里的大虾,对你的大名是如雷贯耳呀!!!!可我的e文实在不好,估计在d5带的
帮助中是找不到什么启发了:)

to txinfo(冰炎两重天):
谢谢你提供的网址,那个东东我是down下来了,可一下子还看不不懂里面的代码,另外我把那个pas文件安装编译后,additional页中出了TFormResizer这个新控件,可它有什么用呢????

myguilotus 2001-12-04
  • 打赏
  • 举报
回复
copy by delphi 葵花宝典2.5

-------------------------------------
---- 我 们 知 道, 屏 幕 分 辨 率 的 设 置 影 响 着 表 单 布 局, 假 设 你 的 机 器 上 屏 幕 分
辨 率 是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;

xtky_limi 2001-12-04
  • 打赏
  • 举报
回复
旁听
Kingron 2001-12-04
  • 打赏
  • 举报
回复
窗体有Scale属性和ScaleBy方法!!!自己看看吧。
txinfo 2001-12-04
  • 打赏
  • 举报
回复
http://vcl.vclxx.org/DELPHI/D32FREE/EASYSIZE.ZIP

EASYSIZE.ZIP
TFormResizer 能够在运行时刻,随着 TForm 的大小自动等比例改变 TForm上每个构件尺寸及位置的构件 ( 2.0 版,附源码 ),作者 : David A. Price。

xxy1898 2001-12-04
  • 打赏
  • 举报
回复
看来,没有最佳办法了!
哎~~~~~~
加载更多回复(27)

5,930

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧