------------------------------------------------------------------------------------------------------------
TSnapForm v1.3b - Copyright (C) 2003 (cyberbobjr & yoopi)
30/06/2003
------------------------------------------------------------------------------------------------------------
Auteurs :
cyberbobjr - cyberbobjr@yahoo.com
Emandhal - Hydrogene@netcourrier.com

This component let a form to be magnetized with another form (like WinAmp). The magnetic strength is modifiable.
It is also possible to stick the form and moving the child form with his parent.

Sorry for our bad english, but we are French body :)
------------------------------------------------------------------------------------------------------------
This component is under GPL licence, you can consult it in the file "Licence.txt".
With this addition :
In the case of you distribute this component on a compilation (on CD or DVD), you must give us a copy of this compilation.
------------------------------------------------------------------------------------------------------------
History Log :
TSnapForm v1.3b - non visual component
Correction of bugs  :
  - The form does not fall apart any more when one it moves too quickly 
  - One can activate sticky after magnetizing with an immediate effective action

TSnapForm v1.2b - non visual component
Amliorations :
  - Correction of bugs
  - Addition of the use in MDI 
  - Possibility of sticking the edges of the screen (in the same way in windows MDI, one can stick the edges of visible surface) 

Some bugs exists, in particular :
  - In joining in particular, if the card are stuck by magnetism and that one activates the adhesive, the adhesive does not take. It is necessary to remake magnetizing in this case... 

TSnapForm v0.9b - non visual component
Some bugs exists, in particular :
  - During a fast displacement and when the cards are stuck, the card falls apart 
  - Joining disappear when one min/max the window 

------------------------------------------------------------------------------------------------------------
Some warnings :
  - Magnetic form : form A is attracted by form B when A is moving near B
  - Sticky form : form A move when form B is moving

Some details about published properties :
  Active : determine if magnetizing is activated or not (false during creation) - Boolean
  ActiveStick : Determine if one activates joining on the magnetized window - Boolean
  SnapStrenght : Determine the force of magnetizing  - Integer
  SnapScreenBorder : Allows to determine magnetizing on the edges of the screen - Boolean

Dtails des fonctions :
    SetScreenRect; Record the position of the 4 corners of the screen or visible surface MDI in FScreenRect
    WMMoving; Procedure called during the displacement of the parent form 
    WMMovingStick; Procedure called during the displacement of the stuck form
    HookStickForm; Procedure initializing the capture of the Windows message of displacement of the stuck form
    UnHookStickForm; Procedure removing the capture of the Windows message of displacement of the stuck form
    HookForm; Procedure initializing the capture of the Windows message of displacement of the parent form 
    UnhookForm; Procedure removing the capture of the Windows message of displacement of the parent form
    WndProcForm(var AMsg: TMessage); Management of the messages of the parent form
    WndProcStickForm(var AMsg: TMessage); Management of the messages of the stuck form
    SetActive(value : boolean);  Procedure activating or not the magnetizing of the parent form 
    SetStickActive(value : boolean); Procedure activating or not the joining of the magnetized form
    SetSnapScreenBorder(value : boolean); Procedure activating or not the magnetism of the edge of the screen
    create(AOwner : TCOmponent); override; Constructor
    AddFormSnap(SnapForm : string); Add a form for magnetizing 
    DelFormSnap(SnapForm : string); Remove a magnetized form
    Destroy; override; Destructor
------------------------------------------------------------------------------------------------------------
TSnapForm is a non visual component.
It is enough to place it on the parent form then in the code to specify the forms concerned with the order: 
AddFormSnap(FormToAddTypeTForm)

The activation of magnetism and joining is done by positioning the following properties: 
Active : to activate magnetism on the forms added by AddFormSnap
ActiveStick : to activate stick on the forms added by AddFormSnap
SnapScreenBorder : to activate magnetism on the edges of the screen

SnapStrenght : Determine the force of magnetism 
For a concrete example, do not hesitate to refer to you has the example provided with the file. 