【问题标题】:Seeking a way to have a "Hover button" to expand a section寻求一种方法让“悬停按钮”展开一个部分
【发布时间】:2010-09-14 15:04:04
【问题描述】:

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

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

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

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

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

感谢您的 cmets/帮助!

【问题讨论】:

    标签: delphi components


    【解决方案1】:

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

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


    (来源:17slon.com

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


    (来源:17slon.com

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


    (来源:17slon.com

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

    【讨论】:

    • 谢谢你;我想我会那样做。感谢您对 stackoverflow 的回答;我经常看到你的贡献!
    【解决方案2】:

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

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

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

    祝你好运!

    【讨论】:

    • 感谢您的回复。我分享您的担忧并认为我提到的设计是“难闻的气味”。是那些从事营销的人! ;-)
    • @Onnodb- 有时与可用屏幕空间有关。您还必须考虑分辨率为 1024x768 pix 的用户。对于具有大量控件的大型应用程序,很难将属于一个模块/功能/部分的所有按钮都放在屏幕上。
    【解决方案3】:

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

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

    【讨论】:

    • 比你的评论。我还没有尝试过 TBitBtn。我想我必须与项目经理和营销部门多谈谈。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 2021-09-14
    • 1970-01-01
    • 2020-09-23
    • 2021-10-12
    • 1970-01-01
    相关资源
    最近更新 更多