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

问题是我们希望用户能够将鼠标移到“+”上方。签署以扩大该部分。

最初我查看了TSpeedButton(OnMouseEnter),但即使它是“Flat”,焦点矩形仍然显示,因此字形不居中。这个解决方案的主要问题是外观。

然后我看着制作TImage的后代。这有点“非常规”但它确实有效。在OnMouseEnter或OnClick中,它会切换一个内部布尔值“Expanded”。标记,然后从资源加载适当的图片。我不喜欢这样的非常规解决方案。

我需要将它添加到几个不同的屏幕中,因此我可能会谨慎地为此构建/构建组件。我有JVCL,但我没有看到任何合适的手。

感谢您的意见/帮助!

有帮助吗?

解决方案

我一直很喜欢 ModelMaker Code Explorer 使用的方法。

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


(来源: 17slon.com

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


(来源: 17slon.com

单击此按钮时,将出现一个面板。按钮仍在那里,但有一个新的图像。您可以单击它以关闭面板。


(来源: 17slon.com

此会话之间保留此切换按钮的状态。 IOW,即使你重新启动Delphi,下一个tima你调用'Add Method','Options and Directives'面板将完全出现在你最后一次离开时。

其他提示

  

我不喜欢这样的非常规解决方案。

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

我为没有回答您的问题而道歉,但我希望您花2分钟时间考虑您的用户是否真的更喜欢这个解决方案: - )

祝你好运!

实际上,我认为在这种情况下使用TImage非常传统。我看到很多人建议使用TImage,当TButton或其任何同事对开发人员试图做的任何事情都没有适当的控制权时。

你试过TBitBtn吗?我认为,当你摆脱文本时,它会集中与你相关的任何图像。我刚刚检查了Delphi 6,我已经安装在这台机器上了,它有MouseMove事件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top