寻求一种具有"悬停按钮"的方式来扩展部分
我有一个流程面板,我会根据是否选择显示所有项目在运行时向其中添加其他项目。一切都很好;扩展由工具栏按钮控制。
麻烦的是,我们希望用户能够将鼠标移到" +"号上以展开该部分。
替代文字http://xrw.bc.ca/download/so/q.gif
最初,我查看了TSpeedButton(OnMouseEnter),但即使它是" Flat",焦点矩形仍会显示,因此该字形不会居中。该解决方案的主要问题是外观。
然后我看着制作TImage的后代。有点"不合常规",但是可以。在OnMouseEnter或者OnClick中,它将切换内部布尔" Expanded"标志,然后从资源中加载适当的图片。我不喜欢这样的非常规解决方案。
我需要将其添加到几个不同的屏幕中,因此,为此拥有/构建一个组件可能是谨慎的选择。我有JVCL,但我看不到任何合适的辅助工具。
感谢评论/帮助!
解决方案
实际上,我认为在这种情况下使用TImage非常常规。我已经看到很多人建议使用TImage,而无论TButton或者其任何关联者对开发人员尝试执行的操作没有足够的控制权。
我们是否尝试过TBitBtn?我认为,当我们摆脱文字时,它将使我们与之关联的任何图像居中。我刚刚签入了Delphi 6,所有我已经安装在这台计算机上的设备都发生了MouseMove事件。
i have a dislike for unconventional solutions like that.
在过去的几年中,我对我们在这里似乎正在创建的非常规UI解决方案有些怀疑。为什么不仅仅使用用户实际上必须单击的按钮?在我使用的软件(MS Office或者编程实用程序)中,这似乎更为常见。另外,我将按钮做得更大一些:在屏幕截图中,确实看起来像是我们必须用鼠标光标定位的小东西。哦,好了,如果我向我们提出建议,无论如何我们都没有要求,为什么不给它加上" >>"而不是" +"作为标题呢?而且,如果我们还要给它加上助记符的文字说明,那么实际上它可以通过键盘访问。所有这些都应该使UI更好,更直观。我猜。
抱歉,我没有回答问题,但我希望我们花2分钟的时间来思考用户是否真正喜欢此解决方案:-)
祝你好运!
我一直很喜欢ModelMaker Code Explorer使用的方法。
例如,当我们添加新方法时,一些很少使用的东西会折叠显示(下图中的"选项和指令")。
替代文字http://17slon.com/krama/expand-mmx-1.png
将鼠标悬停在文本上时,我们会发现它实际上是一个平面按钮。 (除了不是我相信Gerrit会在这里做一些自定义的绘画魔术)。
替代文字http://17slon.com/krama/expand-mmx-2.png
当我们单击此按钮时,将出现一个面板。按钮仍然存在,但是具有新图像。我们可以单击它以关闭面板。
替代文字http://17slon.com/krama/expand-mmx-3.png
在会话之间保留此切换按钮的状态。 IOW,即使我们重新启动Delphi,在下一个提法中调用"添加方法","选项和指令"面板也将按照我们上次离开时的样子显示。