On input validation, I'm using balloon tips instead of message boxes. My problem is that on Vista, they have the old XP style with the rounded corners, not the newer more rectangle like appearance.
I've tried creating them using CreateWindowEx and tooltips_class32
or showing the Edit's associated balloontip using SendMessageW and EM_SHOWBALLOONTIP
, the result is the same.
Doing the same thing in Visual Studio and C# results in a Vista style balloon tip.
You can see an example of the balloon hint I need, when you toggle Caps Lock while in a password edit, like the one on the Windows Logon.
If you're using Delphi 2009, then adding balloon hints is reasonably straightforward, although the documentation is poor. (surprise, surprise)
This next bit is very non-obvious:
You're done. This doesn't look 100% vista-like, maybe due to font choice. But it's pretty close.
(source: codegear.com) ,
As can be read in Delphi 2009 reviewers guide each VCL component now has a CustomHint property. It can be set to any descendant of TCustomHint.
Be sure to enable baloon hints in Vista else they won't show.
The TCustomHint in Delphi 2009 has four protected overloads of ShowHint that when called allow you to place the TCustomHint on demand and in specific locations:
procedure ShowHint; overload;
procedure ShowHint(Point: TPoint); overload;
procedure ShowHint(Rect: TRect); overload;
procedure ShowHint(Control: TControl); overload;
All you need to do is implement a hint in the style you want (or just descend from TBalloonHint if it is close enough) and make those methods public to have the ability to place a hint where-ever and when-ever you want.
Note: Change the Title property of the TCustomHint to change what text is displayed, unless you use the ShowHint that takes a TControl as an argument. In that case it gets it from the control's Hint property (and places it in the Title property of the TCustomHint).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With