7
votes

I am looking for a Delphi button designed to use with Aero Glass running Vista and Windows 7, with the following properties:

  1. completely self-drawn TCustomControl descendant.

  2. looks good [ renders in a way that looks to the user like a normal button, with no glitches ] over a Glass pane with Aero composition (DWM), no white or black ring around the button, and no problems with the caption getting messed up by Aero composition. (This will knock out any button that has not been written to be glass aware.)

  3. The usual features of a TButton/TBitButton, including link to TActions, support for a glyph (bitmap/picture), etc.

Optional, nice to have features:

  1. Transparency support (optional, it would be nice if it could be opaque but draw cleanly over glass).
1
Did you see this article, BTW? Apparently stuff drawing funny on glass is a broader Windows issue and not just a VCL problem. delphihaven.wordpress.com/2010/07/29/controls-and-glassMason Wheeler
Oh yeah, of course. I'm thinking about it a lot, thus this question. I asked the question that prompted that blog article.Warren P
I gave you a solution as an answer to one of your other questions. I can't copy-paste the link because I am on an iPad right now.Cosmin Prund
There is absolutely no reason to buy an expensive third-party component, when Cosmin Prund has shown how easy it is to make the standard TButton work flawlessly. See stackoverflow.com/questions/3357224/…Andreas Rejbrand
Elsewhere and in the Delphi QC area, it turns out that regular TButton can't work flawlessly because the Common Controls library itself and glass don't play nice. But TBitBtn with doublebuffered off works fine.Warren P

1 Answers

4
votes

I can throw TRzButton from Raize Components into the ring. The form should have DoubleBuffered set to true to make the labels visible, but the button must have DoubleBuffered switched off to remove the unwanted frame.

Raize Button on Glass

You can also use TRzBitBtn if a glyph is required. As an alternative TPngBitBtn from PngComponents will also qualify.