2

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

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

替代文字

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

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

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

感谢您的意见/帮助!

4

3 回答 3

6

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

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

替代文字
(来源:17slon.com

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

替代文字
(来源:17slon.com

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

替代文字
(来源:17slon.com

此切换按钮的状态在会话之间保留。IOW,即使您重新启动 Delphi,下次您调用“添加方法”时,“选项和指令”面板也会与您上次离开时​​完全一样。

于 2008-10-02T05:56:21.960 回答
1

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

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

对于没有回答您的问题,我深表歉意,但我希望您能花 2 分钟时间思考您的用户是否真的更喜欢这个解决方案 :-)

祝你好运!

于 2008-10-01T22:37:32.217 回答
0

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

你试过 TBitBtn 吗?我认为当您摆脱文本时,它会以您与之关联的任何图像为中心。我刚刚签入了我在这台机器上安装的所有 Delphi 6,它有 MouseMove 事件。

于 2008-10-01T21:48:15.050 回答