在输入验证时,我使用气球提示而不是消息框。 我的问题是,在Vista上,它们具有圆角的旧XP风格,而不是更新的矩形外观。
我尝试使用CreateWindowEx和tooltips_class32
创建它们,或者使用SendMessageW和EM_SHOWBALLOONTIP
显示Edit的关联balloontip,结果是一样的。
在Visual Studio和C#中执行相同的操作会产生Vista样式的气球提示。
当你在密码编辑中切换Caps Lock时,你可以看到我需要的气球提示示例,就像Windows登录一样。
答案 0 :(得分:16)
如果您正在使用Delphi 2009,那么添加气球提示相当简单,尽管文档很差。 (惊讶,惊讶)
下一位是very non-obvious:
你已经完成了。这看起来不像100%vista,可能是由于字体选择。但它非常接近。
(来源:codegear.com),
答案 1 :(得分:3)
可以在Delphi 2009 reviewers guide中读取每个VCL组件现在都有一个CustomHint属性。它可以设置为TCustomHint的任何后代。
请确保在Vista中启用气球提示,否则他们将无法显示。
答案 2 :(得分:2)
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属性中)。