打赏

1、源起:

源于一个安装包的广告定制。广告客服提供的图片太大,inno setup默认尺寸容不下它,需要扩充,拉宽安装界面尺寸。

以inno setup所附带例子说事,其默认尺寸如下:

 

2、ScaleX

核心函数为ScaleX,其原型如下:

function ScaleX(X: Integer): Integer;

作用为适应DPI,给指定的X值在X方向上做缩放。同理有ScaleY,本例用不到。

 

3、实现代码

Inno Setup中,写自定义函数,横向缩放窗体及其所属控件,并分类调整控件位置及宽度,完成界面缩放。

[Code]

//横向拉伸长度const EXPAND_VALUE = 128; //遍历控件改其宽度 procedure ExpandPageControl(AControl: TWinControl); var i: Integer; ctrl: TControl; wc: TWinControl; begin for i := 0 to AControl.ControlCount - 1 do begin ctrl := AControl.Controls[i]; if (ctrl is TBitmapImage) and (ctrl <> WizardForm.WizardSmallBitmapImage) then Continue; if (ctrl is TButton) or (ctrl is TBitmapImage)then ctrl.Left := ctrl.Left + ScaleX(EXPAND_VALUE) else ctrl.Width := ctrl.Width + ScaleX(EXPAND_VALUE); if ctrl is TWinControl then begin wc := ctrl as TWinControl; if wc.ControlCount <> 0 then ExpandPageControl(wc); end; end; end; procedure InitializeWizard(); begin with WizardForm do begin Width := Width + ScaleX(EXPAND_VALUE); end; ExpandPageControl(WizardForm); end;

如此就基于WizardForm对安装窗体做X轴上缩放。

 

4、效果

如图示:

posted on 2018-01-16 20:56  楚人无衣  阅读(822)  评论(0编辑  收藏  举报