2008-10-01 60 views
2

我有一个流程面板,我在运行时添加额外的项目,根据他们是否选择显示所有项目。这一切都很好;扩展由工具栏按钮控制。寻求一种方法来创建一个“悬停按钮”来扩大节

麻烦的是,我们希望用户能够将鼠标移动到“+”号上以展开该部分。

alt text http://xrw.bc.ca/download/so/q.gif

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

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

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

感谢您的意见/帮助!

回答

6

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

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

alt text http://17slon.com/krama/expand-mmx-1.png

当你将鼠标悬停在文本,您会发现它实际上是一个平坦的按钮。 (除此之外 - 我相信Gerrit会在这里做一些定制的绘画魔法)。

alt text http://17slon.com/krama/expand-mmx-2.png

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

alt text http://17slon.com/krama/expand-mmx-3.png

这个切换按钮的状态会话之间保留。 IOW,即使您重新启动Delphi,在下一个tima调用'Add Method'时,'Options and Directives'面板将显示与上次离开时​​完全相同。

0

其实,我认为在这种情况下使用TImage是相当传统的。我看到很多人都建议使用TImage,无论TButton或其任何一个员工对开发人员尝试做什么都没有适当的控制权。

您是否试过TBitBtn?我认为,当你摆脱文字时,它会将你与之相关的任何图像集中在一起。我刚刚在德尔福6中进行了检查,我已经安装在这台机器上,并且有了MouseMove事件。

+0

比你的评论。我还没有试过TBitBtn。我想我必须与项目经理和市场营销部门进行更多的交流。 – 2008-10-01 23:06:58

1

我对这样的非传统解决方案很不喜欢。

在过去的几年里,我已经长大有点可疑的非常规UI解决方案 - 这是你仿佛在这里产生。为什么不使用用户实际上必须使用的按钮点击?这在我使用的软件中似乎更常见,无论是MS Office还是编程实用程序。另外,我会让按钮稍微大一点:在屏幕截图中,它看起来像是一个小小的东西,你必须用鼠标指针瞄准。哦,好吧,如果我用劝告来窃听你,你仍然没有要求,为什么不把“>>”作为标题而不是“+”?如果你也给它一个带助记符的文本标题,它实际上可以通过键盘访问。所有这些都会让你的界面更好,更直观。我猜。

我不回答你的问题道歉,但我希望你会花2分钟思考用户是否会更喜欢这种解决方案:-)

祝你好运!

+0

感谢您的回复。我分享你的关注,并考虑我提到的设计是“难闻的气味”。这是在营销中的那些人! ;-) – 2008-10-01 22:44:32

+0

@ Onnodb-有时候是关于可用的屏幕空间。您还必须考虑分辨率为1024x768像素的用户。对于有大量控件的大型应用程序,很难将属于一个模块/功能/部分的所有按钮放在屏幕上。 – Ampere 2015-01-13 14:54:20

相关问题