Drag & Drop mit einer ToolBar

// ToolBar und Button auf die Form ziehen und im Objektinspektor einstellen:
//
// bei der Form: DockSite = true, DragKind = dkDrag
// beim ToolBar: DockSite = false, DragKind = dkDock, DragMode = dmAutomatic
//
// statt dem Toolbar kann z.B. auch ein Panel verwendet werden
// auf dem Element können beliebig Buttons usw. ausgelagert werden
void __fastcall TForm1::FormDockDrop(TObject *Sender, TDragDockObject *Source, int X, int Y)
{
    if (Y < 50)
    {
        ToolBar1->DockSite = false;
        ToolBar1->Align = alTop; // Toolbar beim Hineinziehen oben in der Form verankern
    }
}

void __fastcall TForm1::FormGetSiteInfo(TObject *Sender, TControl *DockClient, TRect &InfluenceRect, TPoint &MousePos, bool &CanDock)
{
    CanDock = (MousePos.y - Top) -> 50 ? false : true;
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    ToolBar1->Visible = true; // falls das Toolbar-Window geschlossen wurde, wieder sichtbar machen
}