I. ToolBar détachable▲
Poser un TPanel (Panel1) sur la fiche (Form1) avec les propriétés :
• Align = alTop
• AutoSize = True (à faire après avoir posé la ToolBar)
• BevelOuter = bvNone
• UseDockManager = False
• DockSite = True
Sur Panel1 poser une ToolBar (ToolBar1) avec les propriétés :
• BorderWidth = 1
• DragKind = dkDock
• DragMode = dmAutomatic
• Indent = 2
Événement OnCreate de Form1(Taille de la ToolBar quand elle est flottante) :
void __fastcall TForm1::FormCreate(TObject *Sender)
{
ToolBar1->UndockHeight = 60;
ToolBar1->UndockWidth = 128;
}Événement OnDockDrop de Panel1 :
void __fastcall TForm1::Panel1DockDrop(TObject *Sender,
TDragDockObject *Source, int X, int Y)
{
ToolBar1->Align = alTop;
}Événement OnDockOver de Panel1 (dessin du rectangle de déplacement sur Panel1) :
void __fastcall TForm1::Panel1DockOver(TObject *Sender,
TDragDockObject *Source, int X, int Y, TDragState State,
bool &Accept)
{
TRect ARect;
ARect.Left = Panel1->ClientOrigin.x;
ARect.Top = Panel1->ClientOrigin.y;
ARect.Bottom = Panel1->ClientOrigin.y + 30; //30 hauteur
ARect.Right = Panel1->ClientOrigin.x+Panel1->Width;
Source->DockRect = ARect;
}La ToolBar pouvant être rendue invisible avec le bouton fermeture, prévoir de la rendre à nouveau visible avec le code suivant : ToolBar1->Visible = true; (par exemple dans un menu).
Les ControlBar permettent de faire cela beaucoup plus facilement. Cet exemple démontre plus le docking de contrôles.


