我想允许用户调整窗体的大小,并按比例调整其控件的大小。ScaleBy(N,M)对我来说很好,但如果重复,当然会有累计舍入误差。为了解决这个问题,我只希望在ScaleBy()之前调用一个以其默认外观和大小重新创建表单的方法,然后使用各种值调用ScaleBy。我知道我可以通过在面板中托管我的表单(并处理/重新创建它)来做到这一点,但是在使用ScaleBy()之后,是否有一个调用可以重置表单呢?
编辑-我正在使用Delphi XE2,也会对任何人成功地使用组件或其他代码(付费或免费)来整齐地缩放表单感兴趣-我自己的下载还没有产生一个有效的解决方案。
4条答案
按热度按时间ulydmbyx1#
尝试
EasySize
(TFormResizer
)组件。当窗体大小更改时,
TFormResizer
组件可调整窗体(或面板)上的所有控件的大小。几年前我成功地使用了它--适用于D5/7。你可能需要对XE2做一些小的调整(我没有XE2,所以我不能测试它)。
tgabmvqs2#
一种解决方案是在窗体的所有子控件上使用窗体的Components属性,并将它们重置回其原始值。
以下文章具有示例代码:http://delphi.about.com/od/adptips2005/qt/storecontrolpos.htm
这是为了稍有不同的目的,但根据您的需要修改代码应该不会太难。
z31licg03#
首先,将比例调整为原始比例,然后将比例调整为新比例。例如,要在OnReSize事件中缩放表单:
332nm8kg4#
这对我来说很好。为了解决舍入问题,我从基值100000开始;使用TSpinEDIT,其默认为‘100’,步长为10(%):
这以10%的增加/减少前进和后退,没有舍入问题。