TTransButton, ver 0.90 (alpha), copyright (C) 1995, Midnight Beach.
(midnight@armory.com, http://www.armory.com/~jon/MidnightBeach.html)

TTransButtons act like TSpeedButtons except that they do not have rectangular
borders and can have "transparent" bitmaps.  (The top-left pixel defines the
transparent color.)  That is, a TransButton can be any shape you like:  an oval,
an arrow, or even a cropped photo.

In addition,
  1) you can use glyphs in a .res file, via the GlyphID property, or an external
     .bmp file, via the GlyphName property.  (To use .res bitmaps at design
     time, the .res file has to be linked into the .dcl. See AppPix.pas.)
  2) TransButtons have OnUp and OnDown events, that allow changes to your toggle
     buttons to directly affect the underlying state - no more polling the Down
     property!

Note that TTransButtons *do* realize their palette as necessary - but you will
probably get weird results if any given form has TransButtons and bitmaps with
different palettes.

Known failings of ver 0.90:

1) Size and hinting is based on the rectangle defined by the glyph - that is,
   you get a hint even when the cursor is over the transparent part.

Philosophical Issues:

  1) Is it "innovative" or "idiotic" to have a property like "Version" that
     ignores user changes?
  2) A SpeedButton will ignore a TransButton with the same GroupIndex, so
     TransButtons ignore SpeedButtons with the same GroupIndex.  Maybe they
     shouldn't.
  3) $defining OffScreen doesn't seem to reduce the incidence of 'flashing'
     in the transparent area during redraws - does it even reduce flicker on
     slow machines?
  4) The transparency code works - but maybe I should gut it and use TImageList
     anyhow?  Would make for smaller VCL ....
  5) Should Glyph.Width mod NumGlyphs <> 0 cause an exception?

Bugs:

  1) "Glyph" properties work at design time, but don't get loaded at runtime??????