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.