在Inno Setup[Code]部分将宏扩展到Pascal Code



我试图制作一个宏,以避免重复代码和注释。

我试过这个:

#define GrowOnPage(any Page, any Component) Component.Width := Page.SurfaceWidth; Component.Anchors := [akLeft, akRight, akTop];

但是,它找不到宏。我只是试着像正常的函数/过程一样调用它:

GrowOnPage(configPage, configTextField);

也许我完全误解了这里的宏。但是文档中没有任何示例。

我没有为此编写过程的原因是Anchors属性在组件的公共父类(如TCustomEdit(中不可用。

解决这个问题的正确方法是什么?

要评估预处理器函数,必须使用预处理器指令。实现这一点的最常用方法是使用#emit指令。

请注意,Inno Setup预处理器函数与C不同。它们实际上是函数。因此,如果你想使用它们来生成脚本的一部分,它们必须计算为字符串。像这样:

#define GrowOnPage(str Page, str Component) 
Component + ".Width := " + Page + ".SurfaceWidth; " + 
Component + ".Anchors := [akLeft, akRight, akTop];"

并像这样使用:

#emit GrowOnPage("configPage", "configTextField")

相关内容

  • 没有找到相关文章

最新更新