delphi c++builder dock dockpanel-suite

¿Recomendaciones para una biblioteca de acoplamiento para Delphi/C++ Builder?



c++builder dock (3)

He usado JCL, tengo LMD, DevExpress y Automated QA Docking Library.

Lo más cerca que encontrará que satisfará sus necesidades es la Biblioteca de acoplamiento AutomatedQA. Lo uso en mi trabajo para uno de mis proyectos.

Tu siguiente paso, compra la Biblioteca AutomatedQA :)

de un cliente feliz.

Actualmente, mi equipo está pensando en trasladar nuestra aplicación existente basada en MDI a un enfoque más moderno basado en el acoplamiento. Todavía estamos pensando, pero nos gustaría moverlo a algo como el acoplamiento y el aspecto visual de VS2010:

Esto tiene las siguientes características:

  • Muestra un contorno combinado donde la ventana atracará
  • Muelles en pestañas, así como uno al lado del otro
  • Permite el acoplamiento arrastrando y soltando sobre una imagen que muestra la posición del muelle (lo llamo ''widget de acoplamiento'' a continuación)
  • Se ve muy bien también (tema / UI-wise)

Tengo problemas para encontrar una biblioteca de acoplamiento de buena calidad para utilizar con RAD Studio 2010 y estoy buscando asesoramiento sobre qué biblioteca / es no he encontrado o cómo usar las que he encontrado para lograr algo como esto.

  • Actualización 2, julio de 2011: esta pregunta analizó cada biblioteca de acoplamiento disponible para Delphi / C ++ Builder, así que estoy tratando de mantenerla actualizada. Dos cambios que conozco:
    • SmartBear, que ahora posee AutomatedQA, tiene una biblioteca de acoplamiento de AutomatedQA al final de su vida útil . Esta es la que recomiendo comprar. Están considerando una fuente abierta.
    • El único problema que tuve con DevExpress docking (que no lo hacía digno de comprar) fue su falta de soporte para el acoplamiento al estilo VS2008 / 10, con un widget de acoplamiento, superposición transparente mientras arrastraba, etc. Ahora lo están implementando . Debido a esto, y dado que AQDocking ya no se vende, si hiciera esta pregunta ahora, mi respuesta aceptada sería comprar DevExpress Docking .

Encontré las siguientes bibliotecas. Aquí hay una descripción general:

Docking integrado de VCL

Esto permite que los formularios se acoplen en otras formas o TWinControls, pero parece ser bastante básico. Arrastre formularios utilizando un esquema pintado XOR, que funciona muy mal en Vista y Win7. Existe un control TTabDockSet para formularios acoplados con pestañas, pero no puedo entender cómo controlar cómo se renderizan los títulos de los formatos acoplados una vez acoplados. Creo que implementar el acoplamiento uno al lado del otro tendrá que hacerse de forma manual, creando nuevos paneles portuarios sobre la marcha. Las ventanas de acoplamiento de RAD Studio IDE son un poco más suaves que esto (rectángulos transparentes al arrastrar un formulario, por ejemplo) que es impar, ya que pensé que usaba el soporte de acoplamiento de VCL.

Acoplamiento JVCL

Esto parece una solución más decente que el acoplamiento VCL incorporado. Admite el acoplamiento en cualquier borde o el cliente, y muestra un rectángulo alfablended donde el formulario se acoplará.

Parece ser bastante defectuoso (se permite colocar un segundo formulario sobre el primero, pero se congela el programa) y no tiene soporte de pestañas integrado ni ningún tipo de artilugio de ubicación de colocación.

LMD Docking Pack

Esto parece prometedor: si bien no parece acoplarse directamente a las formas, tiene paneles de acoplamiento y controles / marcos colocados sobre eso. Los formularios existentes se pueden migrar a marcos. También tiene un widget de acoplamiento y soporte de pestañas.

Sin embargo, la demostración parece ser bastante poco confiable. Tengo instalada la última versión de evaluación, y la creación de un nuevo proyecto con un sitio de conexión y varios paneles, y presionando Ejecutar, provoca lo siguiente:

Esto se está bloqueando en la transmisión de componentes de formulario. El examen visual del archivo DFM no muestra nada incorrecto, pero hay un blob binario opaco para la información de diseño que puede estar causando. Esto no es especialmente alentador en una versión de evaluación.

DevExpress ExpressDocking

Tenía muchas esperanzas en esto: nunca antes había usado controles DevExpress, pero tienen una buena reputación. Pero su programa de demostración fue realmente decepcionante:

El control es flickery y no parece tener un buen tema con Windows, incluso con el estilo XP. Tiene acoplamiento con pestañas, pero utiliza un esquema XOR-ed, algo que no funciona bien en XP o Vista. Tampoco tiene ningún tipo de widget de acoplamiento. Francamente, parece que no se ha actualizado desde los días de Windows XP. Actualización de julio de 2011: se está mejorando .

Biblioteca de acoplamiento de AutomatedQA / SmartBear

Esta es la más prometedora de todas las bibliotecas hasta el momento.

Regularmente uso AQTime , un excelente generador de perfiles que parece estar escrito usando su propia biblioteca de acoplamiento, y funciona bien. Sin embargo, la última versión de la descarga de prueba de la biblioteca de acoplamiento es para RAD Studio 2009, y el consejo dado para la instalación en 2010 es que no es compatible, y usted debe volver a compilar la fuente. La demostración no viene con la fuente, y no tenemos RS2009, y el instalador se niega a instalar a menos que lo hagamos, e incluso si logramos instalarlo no lo podemos usar, ya que tendríamos que volver a compilar el fuente inexistente.

Estuve en contacto con su equipo de soporte, y me indicaron este hilo . También encontré otro hilo con clientes que piden más o menos lo mismo . He respondido y espero escuchar mejores noticias. No estoy dispuesto a recomendar que compremos un producto que no puedo evaluar, especialmente cuando no es compatible con nuestro IDE.

  • Actualización: he terminado comprando esta biblioteca. A pesar de la evaluación de problemas (funciona en D2007, y tuve una copia de eso) parece el más fácil de usar de todas las bibliotecas, y también el más poderoso; es fácil escribir un tema para él, por ejemplo. Definitivamente lo recomendaría si necesita seleccionar una biblioteca de acoplamiento también.

  • Actualización de julio de 2011: esta biblioteca ya no se vende, pero puede abrirse pronto .

¿Qué me he perdido?

Eso es todo lo que he encontrado hasta ahora. ¿Ahora que?

  • ¿He perdido alguna buena biblioteca de acoplamiento para Delphi / C ++ Builder / RAD Studio 2010?
  • ¿Me he perdido alguna característica en las bibliotecas que he visto hasta ahora? Una respuesta como "Te perdiste FooBar" o "JVCL sí tiene un widget de acoplamiento, y puedes usarlo así ..." sería bastante increíble de escuchar.
  • ¿Qué recomendarías como mi siguiente paso?

Gracias por tu contribución :)


No he encontrado una sola biblioteca que haga todo lo que me gustaría, así que después de hacer algunas pruebas descubrí que podía hacer casi todo lo que quería usando los controles Native VCL Docking (NVCLD) con una serie de modificaciones personalizadas y algunos adicionales controles.

La siguiente es una lista de cosas con las que me he topado para que NVCLD funcione de la manera que yo quería. No he tenido muchos problemas para portar entre versiones, pero eso se debe a que también tengo el src.

Si no estás buscando tirar el tuyo o si realmente quieres usar una biblioteca de terceros, entonces probablemente puedas dejar de leer el resto de esto. :)

Componentes adicionales:

  1. TDockPanel

    Este panel de acoplamiento muy modificado es el caballo de batalla de mi sistema. Encontré el original en la red, pero lo he modificado para ofrecer una mayor flexibilidad para mis necesidades.

  2. Formularios de acoplamiento personalizados ( formulario básico)

    Al utilizar una clase base personalizada para mis formularios de atraque y heredarlo cuando sea necesario, tengo que hacer menos modificaciones en todos los formularios descendientes.

Modificaciones personalizadas

Estas son modificaciones a los archivos .pas de los componentes de NVCLD mismos. La mayoría de estas modificaciones ya no tienen que realizarse debido a algunas mejoras realizadas en los controles base que comienzan con D2009. Debería poder crear un nuevo descendiente e implementar los cambios en el allí en lugar de modificar los archivos src predeterminados directamente.

  1. Formas de atraque transparentes

    De forma predeterminada (antes de 2009, con certeza), el NVCLD no admite el movimiento transparente de formularios. Hubo un parche de JVCL publicado hace un par de años que agregaba soporte para el JVCL que era simple de incorporar a un parche de NVLCD.

  2. Docking Manager

    El administrador de acoplamiento predeterminado (antes de 2009 con seguridad) no permitió imágenes de botón más nuevas / personalizadas ni cambios en el encabezado de acoplamiento. Esto fue rectificado en D2009 Creo que cuando los métodos necesarios se hicieron virtuales.

  3. Acoplamiento con pestañas

    Para admitir los componentes de acoplamiento adicionales, necesitaba modificar el archivo DockTabSet.pas para admitir propiedades de acoplamiento adicionales utilizadas por los componentes adicionales. La mayor parte de esto se corrigió cuando el Administrador de acoplamiento se modificó como se menciona anteriormente.

Como mencioné la mayoría de estos cambios, hice directamente los archivos Delphi Src y no debería necesitar hacer eso para las versiones más nuevas de Delphi. Mi punto es que con un poco de trabajo por adelantado puedes tener un sistema de acoplamiento bastante robusto sin recurrir al uso de una biblioteca de terceros. No es que haya nada de malo en ninguno de ellos, pero prefiero no usarlos a menos que no tenga otra opción o no tenga el tiempo para hacerlo funcionar a mi manera.


Soy un desarrollador jedi de JVCL, y he usado JvDocking en mis propios proyectos comerciales internos, y me pareció sólido y confiable.

Además, es gratis. Es fácil de extender. Crea una apariencia similar a la del año 2008 visual docking.