Delphi 如何在工具栏上混合图标的图像列表?

Delphi 如何在工具栏上混合图标的图像列表?,delphi,toolbar,delphi-xe,imagelist,Delphi,Toolbar,Delphi Xe,Imagelist,我有一个显示动作按钮的TToolbar,它有一些内置按钮和自己的TImageList为它们提供图标 我还有一个插件,可以在工具栏上添加按钮。它有自己的TImageList和自己的TActionList,动作列表使用图像列表中的图标。但是当我创建按钮并将其添加到工具栏时,它们不会显示插件内图像列表中的图像;它们似乎在操作上使用ImageIndex属性,但在工具栏上使用了TImageList,因此图像都被搞乱了 如何使在这种情况下显示的图像是插件内部TImageList中的图像?工具栏引用了单个图像

我有一个显示动作按钮的
TToolbar
,它有一些内置按钮和自己的
TImageList
为它们提供图标

我还有一个插件,可以在工具栏上添加按钮。它有自己的
TImageList
和自己的
TActionList
,动作列表使用图像列表中的图标。但是当我创建按钮并将其添加到工具栏时,它们不会显示插件内图像列表中的图像;它们似乎在操作上使用ImageIndex属性,但在工具栏上使用了
TImageList
,因此图像都被搞乱了


如何使在这种情况下显示的图像是插件内部
TImageList
中的图像?

工具栏引用了单个图像列表。这是基础Windows控件的一个属性,VCL会简单地反映给您

结论是必须将所有图像放入同一图像列表中。一个工具栏不能引用两个不同的图像列表

一种解决方案是将图像列表传递给插件,并允许插件向图像列表中添加图示符


请注意,我指的是主映像列表。当然,对于禁用的图像和热图像,您会使用不同的图像列表。但是这些并不真正包含不同的glyph–它们包含相同的glyph,但呈现在不同的状态。

工具栏具有对单个图像列表的引用。这是基础Windows控件的一个属性,VCL会简单地反映给您

结论是必须将所有图像放入同一图像列表中。一个工具栏不能引用两个不同的图像列表

一种解决方案是将图像列表传递给插件,并允许插件向图像列表中添加图示符


请注意,我指的是主映像列表。当然,对于禁用的图像和热图像,您会使用不同的图像列表。但这些符号并不真正包含不同的符号——它们包含相同的符号,但呈现在不同的状态。

就像大卫在回答中所说的:只有一个图像列表。您必须将图像从插件复制到工具栏的图像列表,并调整插件操作的ImageIndex。或者将工具栏的imagelist给插件,让插件添加其图像,并对其操作执行任何需要执行的操作。您必须将图像从插件复制到工具栏的图像列表,并调整插件操作的ImageIndex。或者将工具栏的imagelist提供给插件,让插件添加其图像,并对其操作执行任何需要执行的操作。天哪,你现在也读心术了吗?当你编辑答案时,我在评论中输入了几乎相同的内容…:-)啊。这正是我希望我不必做的(天哪,你现在也读心术了吗?我在评论中输入的内容和你编辑答案时差不多…:-)啊。这正是我希望我不必做的(