Delphi 寻找一种方法来拥有一个;“悬停按钮”;展开一节

Delphi 寻找一种方法来拥有一个;“悬停按钮”;展开一节,delphi,components,Delphi,Components,我有一个流面板,我在运行时根据它们是否选择显示所有项目向其中添加额外的项目。这一切都很好;扩展由工具栏按钮控制 问题是,我们希望用户能够将鼠标移到“+”符号上以展开该部分 最初我查看了TSpeedButton(onMouseCenter),但即使它是“平面”的,焦点矩形仍然显示,因此图示符没有居中。这个解决方案的主要问题是它的外观 然后,我想做一个提玛吉的后裔。这有点“非常规”,但会奏效。在OnMouseEnter或OnClick中,它将切换一个内部布尔“Expanded”标志,然后从资源中加

我有一个流面板,我在运行时根据它们是否选择显示所有项目向其中添加额外的项目。这一切都很好;扩展由工具栏按钮控制

问题是,我们希望用户能够将鼠标移到“+”符号上以展开该部分

最初我查看了TSpeedButton(onMouseCenter),但即使它是“平面”的,焦点矩形仍然显示,因此图示符没有居中。这个解决方案的主要问题是它的外观

然后,我想做一个提玛吉的后裔。这有点“非常规”,但会奏效。在OnMouseEnter或OnClick中,它将切换一个内部布尔“Expanded”标志,然后从资源中加载相应的图片。我不喜欢那种非传统的解决方案

我需要将它添加到几个不同的屏幕上,所以我可能需要谨慎地为它构建一个组件。我有JVCL,但我看不到任何合适的东西


感谢您的评论/帮助

实际上,我认为在这种情况下使用TImage是非常传统的。我见过很多人建议使用TImage,当时无论是TButton还是它的任何关联公司都没有对开发人员试图做的任何事情进行适当的控制

你试过TBitBtn吗?我认为,当你去掉文本后,它会将与之相关联的任何图像居中。我刚刚检查了Delphi6,我在这台机器上安装的所有东西,它有MouseMove事件

我不喜欢那种非传统的解决方案

在过去的几年里,我对非传统的UI解决方案有点怀疑——这就是您在这里创建的。为什么不直接使用一个用户必须点击的按钮呢?这似乎在我使用的软件中更为常见,无论是MS Office还是编程实用程序。另外,我会把按钮放大一点:在屏幕截图中,它看起来真的像是一个你必须用鼠标光标瞄准的小东西。哦,好吧,如果我用你没有要求的建议来烦你,为什么不给它“>>”作为标题而不是“+”?如果你给它一个带有助记符的文本标题,它实际上是可以通过键盘访问的。所有这些都会使您的UI更好、更直观。我想是吧

很抱歉没有回答您的问题,但我希望您能花2分钟思考您的用户是否真的更喜欢此解决方案:-)


祝你好运

我一直很喜欢公司采用的方法

例如,当您添加一个新方法时,一些很少使用的内容会显示为折叠(下图中的“选项和指令”)


(来源:)

当您将鼠标悬停在文本上时,您会注意到它实际上是一个平面按钮。(除了它不是-我相信Gerrit在这里做了一些定制的绘画魔术)


(来源:)

单击此按钮时,将显示一个面板。按钮仍然存在,但有一个新的图像。您可以单击它以关闭面板


(来源:)


此切换按钮的状态在会话之间保留。注意,即使重新启动Delphi,下一次调用“Add Method”时,“Options and Directions”面板将与上次完全相同。

感谢您的回复。我和大家分享你的关心和考虑我提到的设计是一种“臭味”。是那些营销人员!;-)@Onnodb-有时是关于可用的屏幕空间。你还需要考虑分辨率为1024x768的用户。对于具有大量控件的大型应用程序,很难将属于一个模块/功能/部分的所有按钮都显示在屏幕上。请参阅您的评论。我还没试过TBitBtn。我想我必须和项目经理&市场部多谈谈;我想我会那样做的。感谢您对stackoverflow的回答;我经常看到你的贡献!