我有一个流程面板,我根据他们是否选择显示所有项目,在运行时添加额外的项目.这一切都很好; 扩展由工具栏按钮控制.
问题是我们希望用户能够将鼠标移到"+"符号上以展开该部分.

最初我看了TSpeedButton(OnMouseEnter),但即使它是"平面",焦点矩形仍然显示,所以字形不居中.这个解决方案的主要问题是它的外观.
然后我看着制作TImage的后代.这有点"非常规",但它有效.在OnMouseEnter或OnClick中,它会切换一个内部布尔"Expanded"标志,然后从资源加载适当的图片.我不喜欢这样的非常规解决方案.
我需要将它添加到几个不同的屏幕,所以我可能会谨慎地为此构建/构建组件.我有JVCL,但我没有看到任何合适的副手.
谢谢你的意见/帮助!
我一直很喜欢ModelMaker Code Explorer使用的方法.
例如,当您添加新方法时,一些很少使用的东西会显示为折叠(下图中的"选项和指令").

(来源:17slon.com)
当您将鼠标悬停在文本上时,您会注意到它实际上是一个平面按钮.(除非它不是 - 我相信格里特在这里做了一些自定义的绘画魔术).

(来源:17slon.com)
单击此按钮时,将出现一个面板.按钮仍在那里,但有一个新的图像.您可以单击它以关闭面板.

(来源:17slon.com)
会话之间保留此切换按钮的状态.IOW,即使你重新启动Delphi,下一个tima你调用'Add Method','Options and Directives'面板将与你最后一次离开时完全一样.