繁体   English   中英

如何在Delphi中显示Vista风格的气球提示?

[英]How to show Vista style balloon hints in Delphi?

在输入验证时,我使用气球提示而不是消息框。 我的问题是,在Vista上,它们具有圆角的旧XP风格,而不是更新的更像矩形的外观。

我尝试使用CreateWindowEx和tooltips_class32创建它们,或者使用SendMessageW和EM_SHOWBALLOONTIP显示Edit的关联EM_SHOWBALLOONTIP ,结果是一样的。 在Visual Studio和C#中执行相同的操作会产生Vista样式的气球提示。

当您在密码编辑中切换Caps Lock时,您可以看到我需要的气球提示示例,就像Windows登录时的那样。

如果您正在使用Delphi 2009,那么添加气球提示相当简单,尽管文档很差。 (惊喜,惊喜)

  • 在表单上删除TBalloonHint
  • 如果需要,删除TImageList以包含图标。
  • 将TIMageList链接到TBalloonHint
  • 将窗体的CustomHint属性设置为TBalloonHint
  • 确保为控件设置ShowHint和ParentCustomHint为true。

下一点非常不明显

  • 将控件的“提示”属性设置为“标题|提示| ImageIndex”

你完成了。 这看起来不像100%vista,可能是由于字体选择。 但它非常接近。

德尔福2009
(来源: codegear.com

Delphi 2009中可以看到, 审阅者指导每个VCL组件现在都有一个CustomHint属性。 它可以设置为TCustomHint的任何后代。

一定要在Vista中启用气球提示,否则他们将无法显示。

Delphi 2009中的TCustomHint有四个受保护的ShowHint重载,当被调用时,允许您根据需要和特定位置放置TCustomHint:

procedure ShowHint; overload;
procedure ShowHint(Point: TPoint); overload;
procedure ShowHint(Rect: TRect); overload;
procedure ShowHint(Control: TControl); overload;

您需要做的就是以您想要的样式实现提示(或者如果它足够接近,只需从TBalloonHint下降)并使这些方法公开,以便能够随时随地提供提示。

注意:更改TCustomHint的Title属性以更改显示的文本,除非您使用以TControl作为参数的ShowHint。 在这种情况下,它从控件的Hint属性中获取它(并将其放在TCustomHint的Title属性中)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM