Mensaje    Asunto: Control Dockable Responder citando

Purulando por la red me he encontrado un ejemplo con código que tal vez pueda servir a alguien de este foro. En este caso se trata de que hacemos que un TTreeView que tenemos insertado en un formulario podamos arrastrarlo y posicionarlo fuera del mismo en cualquier área de la pantalla y a su vez regresarlo a su posición original:

1. Iniciar un nuevo proyecto.
2. De la ficha Standard de la paleta de componentes inserta un Panel en el formulario.
3. Ajusta la propiedad Align del nuevo Panel a alLeft. Ajusta la propiedad BevelOuter a bvLowered. Y por último su propiedad DockSite a true.
4. Ahora insertamos un segundo Panel desde la ficha Standard de componentes y lo hacemos dentro del primero. Ajustamos su propiedad Align a alClient, la propiedad DragKind a dkDock y DragMode a dmAutomatic. De modo opcional podemos poner su BevelOuter a bvNone y su Caption a Ventana flotante.
5. Nos vamos a la ficha Win32 de la paleta de componentes e insertamos ahora un control TreeView dentro del segundo Panel y ajustamos su propiedad Align a alClient.
6. Puesto que esto es un simple ejemplo puedes decorar el TreeView como quieras, para añadirle Items haz doble click encima.
7. Probamos el proyecto pulsando F9. Ahora el TreeView es dockable pero hay un problema. Al iniciarse la aplicación el TreeView no aparece en la forma que queremos, No existe la típica barrita que nos indique a simple vista que ese control es arrastrable y para hacerlo hay que pulsar exactamente en su borde (no vale hacerlo en otro sitio de su superficie. Cerramos la aplicación y volvermos a tiempo de diseño.
8. Vamos al evento OnCreate del formulario principal y lo implementamos como sigue:
//--------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
TRect Recto(Left, Top, Left + Panel1->Width, Top + ClientHeight);
Panel2->ManualFloat(Recto);
Panel2->ManualDock(Panel1, Panel1, alClient);
}
//---------------------------------------------------------------------------

9. Presiona F9 para probar de nuevo el programa.
10. Ten en cuenta una cosa, tal y como tenemos la aplicación el usuario puede cerrar la ventana dockable y una vez hecho esto ésta desaparece definitivamente si posibilidad de volver a mostrarla si no es reiniciando la aplicación. Pues para solucionar esto podemos por ejemplo implementar el OnClick de un botón como sigue:

//--------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Panel2->Visible = !Panel2->Visible;
}
//---------------------------------------------------------------------------
Recordemos que lo que estamos arrastrando NO es el TreeView sino el Panel2 mientras que el Panel1 hace las veces de contenedor del segundo.

Esto lo encontre en:
http://www.functionx.com/bcb/howto/dockwnd.htm
Saludos.
_________________
¡ADELANTE CON ESTE SUPER FORO!