Inno setup 将图像添加到组件列表-组件说明

Inno setup 将图像添加到组件列表-组件说明,inno-setup,pascalscript,Inno Setup,Pascalscript,我想在用户将鼠标光标悬停在“选择组件”页面上的组件上时显示一个小图像 例如,我想这样做: 我在这里找到了一个半解: 但是我缺少了图像部分。基于。您需要复制HoverTimerProc及其支持函数和全局变量 此答案修改了HoverComponentChanged和InitializeWizard过程,以支持除描述标签外的图像 [文件] ... 来源:Main.bmp;标志:dontcopy 来源:Additional.bmp;标志:dontcopy 来源:Help.bmp;标志:dontcopy

我想在用户将鼠标光标悬停在“选择组件”页面上的组件上时显示一个小图像

例如,我想这样做:

我在这里找到了一个半解:

但是我缺少了图像部分。

基于。您需要复制
HoverTimerProc
及其支持函数和全局变量

此答案修改了
HoverComponentChanged
InitializeWizard
过程,以支持除描述标签外的图像

[文件]
...
来源:Main.bmp;标志:dontcopy
来源:Additional.bmp;标志:dontcopy
来源:Help.bmp;标志:dontcopy
[守则]
变量
普拉贝尔:特拉贝尔;
CompImage:TBitmapImage;
加载图像:布尔;
过程HoverComponentChanged(索引:整数);
变量
描述:字符串;
图像:字符串;
ImagePath:字符串;
开始
案例索引
0:开始描述:='这是主文件的描述';图像:='main.bmp';结束;
1:开始描述:='这是附加文件的描述';图像:='additional.bmp';结束;
2:开始描述:='这是帮助文件的描述';图像:='help.bmp';结束;
其他的
Description:=“将鼠标移到组件上以查看其说明。”;
结束;
标题:=说明;
如果图像为“”,则
开始
{ExtractTemporaryFile泵送消息队列,防止递归}
如果不加载图像,则
开始
加载图像:=真;
尝试
ImagePath:=ExpandConstant('{tmp}\'+Image);
如果文件不存在(ImagePath),则
开始
提取临时文件(图像);
结束;
CompImage.Bitmap.LoadFromFile(ImagePath);
最后
加载图像:=假;
结束;
结束;
CompImage.Visible:=真;
结束
其他的
开始
CompImage.Visible:=False;
结束;
结束;
过程初始化Wizard();
变量
HoverTimerCallback:长单词;
开始
{对于HoverTimerProc及其支持函数,}
{见https://stackoverflow.com/q/10867087/850848#37796528 }
HoverTimerCallback:=WrapTimerProc(@HoverTimerProc,4);
设置计时器(0,0,50,HoverTimerCallback);
平面标签:=TLabel.Create(WizardForm);
父项:=WizardForm.SelectComponentsPage;
plambel.Left:=WizardForm.ComponentsList.Left;
平面图宽度:=(WizardForm.ComponentsList.Width-ScaleX(16))第2部分;
平面高度:=ScaleY(64);
supplbel.Top:=WizardForm.ComponentsList.Top+WizardForm.ComponentsList.Height—supplbel.Height;
supplbel.AutoSize:=False;
splambel.WordWrap:=真;
CompImage:=TBitmapImage.Create(WizardForm);
CompImage.Parent:=WizardForm.SelectComponentsPage;
CompImage.Top:=平面标签.Top;
CompImage.Width:=CompImage.Width;
CompImage.Height:=平面高度;
CompImage.Left:=WizardForm.ComponentsList.Left+WizardForm.ComponentsList.Width-平面标签.Width;
WizardForm.ComponentsList.Height:=WizardForm.ComponentsList.Height-CompLabel.Height-ScaleY(8);
结束;

那么,您需要帮助的部分是什么?向我们展示您已经拥有的内容(链接是不够的)。为什么截图上的图像会出现交叉?这是什么意思?我需要每个组件的描述。我找到的解决办法。现在我还要向每个组件添加图像。我在这里找到的示例图像。当我将鼠标放在组件上时,它也会显示一张图片,而不仅仅是描述。我正在尝试插入代码。。但是我做不到。我不知道如何插入。[link]()代码属于这里,在您的问题中,作为文本,而不是图像中的场外代码。将代码从编辑器复制到剪贴板,切换回您的问题,粘贴代码,突出显示所有代码,然后按键盘上的Ctrl+K或单击类似{}的工具栏按钮。在这里添加代码没有什么神奇之处。这就是我要找的。我正试图这样做,但我有一个错误:“未知标识符'WrapTimerProc'”。正如我在回答中两次提到的,您必须复制大部分代码(除了
HoverComponentChanged
InitializeWizard
CompLabel
变量)并将它放在这个答案的代码前面。@Martin Prikryl我解决了它。看起来效果不错。最后一个问题,我想问你的是,如何使更大的组件页和图像了。非常感谢你!!!为描述和标签保留的空间由行
plambel.Height:=ScaleY(64)确定。至于向导窗口的大小,这是一个新问题(请确保您解释一下,您是想让向导窗口总体上变大,还是想让它暂时变大,只是为了这个页面,这两个问题对我来说都不太好)。我按照您的说明解决了这个问题。还有你发布的代码。