我试图制作一个宏,以避免重复代码和注释。
我试过这个:
#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")