

   TBubble and TDBBubble

 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   Components version 1.0
   Copyright  1998 Stphane Vandenbussche ( svanden@caramail.com )
   Set of cartoon-like auto-sized labels.
 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


 Initialy programmed by : Stephane VANDENBUSSCHE
 ========================


 Thanks :  Deftones, Psycore, Fear Factory, Soulfly, The Gathering, PUSA,
 ========  Madredeus, and all the others I can't think of right now!


 Version : Works fine with Delphi 3.x 
 ========= D1 not tested : I'm not interested !
           D2 and D4 not tested : I don't have them ;)


 Sources : Included
 ========= 


 Futur : Sorry, no evolutions planned yet,
 ======= WE'RE ALL GONNA DIE ANYWAY, BOOHOOHOO ! :))
         Maybe I'll write an COM interface, as soon I figured out how
         that damn thing works... maybe, next century ;)
         Crazy ideas are welcome *:)


 Licence :  This is Freeware/Cardware/Riskware/Beerware for any use.
 =========  For use in commercial sofware please mention my name.
            (Yes, I do know it's long!) Pleeeease ! :)


 Warranty :  Huh?? Warranwhat? No-no-no, the author provides NO warranty,
 ==========  NO support, NO updates, NO excuses, NO hugs, NO compassion,
             NO nothing at ALL! The author is NOT liable for any damages,
             earthquakes, floods, forrest fires or whoopsies to whatever
             you use these components for/with.
             My neighbours already hate me anyway! ;)
             Well, okay, maybe I'll send you a fix should you find a
             serious bug anyway. Also, if you're an adult female and you're
             looking like Sung Hi Lee then maybe I'll accept to hug you :)

   >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
   <<<                                       <<<
   >>> USE THIS COMPONENT AT YOUR OWN RISK ! >>>
   <<< IF YOU DON'T LIKE IT, DON'T USE IT !! <<<
   >>>                                       >>>
   <<< BE SURE TO BE OF A LEGAL AGE          <<<
   >>> ACCORDING TO YOUR COUNTRY'S LAWS      >>>
   <<< TO USE THIS COMPONENT !! ;)           <<<
   >>>                                       >>>
   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<


 Files :
 =======
        Bubble.dcu ......... unit
        DBBubble.dcu ....... unit with data-aware
        Bubble.dcr ......... compo resource
        DBBubble.dcr ....... compo resource
        BubblesLarge.res ... large images resource (32x32 pixels)
        BubblesSmall.res ... small images resource (26x26 pixels)

 Note : * You'll have to change the name of the res file you want to
        use (BubblesLarge.res or BubblesSmall.res) to Bubbles.res
        before compiling the units.
        * If you decide to draw your own "bubble-hooks" and change
        their size, be sure to change the value of the HOOKSIZE
        constant in the Bubble.pas unit ...if you got the sources
        of course ;)
        * Notice that the "hooks" in the res files don't have a full
        black contour. They have an "open" side because the overall
        color change is performed with a floodfill. If you "close" the
        contour, floodfill will stop on the colored border between
        the bubbles body and it's hook.


 Install :
 =========
 SEE NOTE ABOVE FOR RESTRICTIONS.

 * Put all the files in your favorite components path
 and use Delphi's "install component" option-menu for each .DCU file.
 * I suggest you start with the "small hooks" resource. Take a look to
 see how the component behaves and works. Once you're used to it you can
 start changing things in it. ROOKIES SHOULDN't PLAY WITH THIS !!
 * You can edit and change the content of the .RES file if you wish to
 have your own style of "hooks". Just don't change the bitmap's name
 inside the resource, okay?


 Tech. :
 =======
 TBubble is basicly a TPaintBox.
 TDBBubble is derived from TBubble.


 Known Bugs : None so far :)  Tell me about it !
 ============ If I knew any of 'em, I wouldn't leave 'em in the
              code you knucklehead! ;)


 Properties :
 ============
 There are no hidden procedures or such.
 Just play around with the properties to find out what they are...
 Don't worry, it's dead-simple.

 All properties work both at design- and run-time.

 ArrowAlign : Places the bubble's "hook" left, right or under the bubble.
              In each of these positions, the "hook" can be aligned near
              the borders or stay in the middle.

 ArrowPointAt : Makes the hook point up or down, left or right according
                to it's position.

 Borderlimit : Sets a margin (pixels) between the border and the hook's edge.
               This only works if the "hook" isn't horizontaly or verticaly
               aligned in the middle (ArrowAlign = UnderMiddle, LeftMiddle
               or RightMiddle).

 Shape : stRoundRect = rounded corners (appears "dirty" on some video cards)
         stRectangle = sqare corners


 FAQ : ? Why don't all corners draw nicely rounded when I select stRoundRect
======   in the Shape property?
       ! Because I don't know why there is a bug in Delphi (unless it's in
         your display driver) that displays it that way on some video cards!
         If there were enough people using my component, maybe we could 
         make a presure group to force Inprise / Boreland, by threathening
         them of impeachement, to produce a specific patch for that one and
         only problem. Wouldn't that be great ?!! ;)

       ? Why is this component so badly written?
       ! If I knew why, I wouldn't write it that way, don't you THINK ? ;)         

       ? Why does my computer crash each time I use your components in my apps?
       ! It's because M$ and Boreland have one common goal : preventing you
         and me from programming because one day we could be ruling the world! ;)

       ? I used your components and now my mom is dead!
       ! Look, I didn't tell you to use 'em as a weapon, okay! ;)

       ? #!~#*!!!^&#$!!?@!!?
       ! Eh... Wo hui shuo hanyu pu hao... right?

       ...other jokes to come.


 Job :  If there's a company out there who likes my work
 =====  and wants to pay me lots of $$$, just let me know :))
        In fact, I already got a job now but it's underpaid.
        So I'll be changing for another company very soon but
        my email remains the same :

        svanden@caramail.com

