Recommandations pour une bibliothèque d’accueil pour Delphi / C ++ Builder?

Mon équipe envisage actuellement de déplacer notre application basée sur les MDI vers une approche plus moderne basée sur un amarrage. Nous pensons toujours, mais nous aimerions le déplacer vers quelque chose comme l’amarrage et l’aspect visuel de VS2010:

VS2010 Interface utilisateur et capture d'écran

Ceci a les caractéristiques suivantes:

  • Affiche un contour mélangé où la fenêtre sera ancrée
  • Docks dans les tabs, ainsi que côte à côte
  • Permet d’accoster en faisant glisser et en relâchant une image montrant la position du quai (j’appelle cela un «widget d’accueil» ci-dessous)
  • Semble très bien aussi (thème / interface utilisateur)

J’ai du mal à trouver une bibliothèque d’accueil de bonne qualité à utiliser avec RAD Studio 2010 et je recherche des conseils sur les bibliothèques que je n’ai pas trouvées ou sur la manière d’utiliser celles que j’ai trouvées.

  • Mise à jour: j’ai fini par acheter la bibliothèque d’accueil d’AutomatedQA . Je pense que c’est le meilleur. Plus de détails ci-dessous dans la section à ce sujet.

  • Mise à jour 2, juillet 2011: cette question portait sur chaque bibliothèque de station d’accueil disponible pour Delphi / C ++ Builder, et j’essaie donc de la garder à jour. Deux changements dont je suis conscient:
    • SmartBear, qui possède désormais AutomatedQA, possède une bibliothèque d’accueil finalisée d’AutomatedQA . C’est celui que j’ai recommandé d’acheter. Ils envisagent de l’ouvrir.
    • Le seul problème que j’ai rencontré avec la station d’accueil DevExpress (qui en rendait l’achat inutile) était le manque de prise en charge de la station d’accueil de type VS2008 / 10, avec un widget d’accueil, une superposition transparente lors du glisser, etc. À cause de cela, et puisque AQDocking n’est plus vendu, si je posais cette question maintenant, ma réponse acceptée serait d’ acheter DevExpress Docking .

J’ai trouvé les bibliothèques suivantes. Voici un aperçu:

Accostage VCL intégré

Cela permet d’ancrer les formulaires sur d’autres formulaires ou TWinControls, mais semble être assez simple. Les formulaires se déplacent en utilisant un contour peint XOR, qui fonctionne très mal sur Vista et Win7. Il existe un contrôle TTabDockSet pour les formulaires ancrés à tabs, mais je ne peux pas déterminer comment contrôler le rendu des titres des formulaires ancrés une fois ancrés. Je pense que l’implémentation côte à côte devra se faire manuellement, en créant de nouveaux panneaux de docksite à la volée. Les fenêtres d’ancrage de l’EDI de RAD Studio sont un peu plus fines (des rectangles transparents lorsque vous faites glisser un formulaire, par exemple), ce qui est étrange, car je pensais qu’il utilisait le support d’ancrage VCL.

JVCL d’amarrage

Cela semble un peu plus une solution décente que l’amarrage VCL intégré. Il prend en charge l’amarrage sur n’importe quel bord ou le client, et montre un rectangle alphablended où le formulaire sera ancré.

Programme de test d'ancrage JVCL

Il semble être assez bogué (laisser un deuxième formulaire sur une première est autorisé, mais il fige le programme) et ne comporte aucun support intégré de dock à tabs ni aucun type de widget de drop-location.

LMD Docking Pack

Cela semble prometteur: bien qu’il ne semble pas que les formulaires soient directement ancrés, il comporte des panneaux d’accueil et des contrôles / frameworks. Les formulaires existants peuvent être migrés vers des frameworks. Il possède également un widget d’accueil et un support de dock à tabs.

Cependant, la démo semble être peu fiable. J’ai la dernière version d’évaluation installée et la création d’un nouveau projet avec un site d’ancrage et plusieurs panneaux et en appuyant sur Exécuter entraîne ce qui suit:

LMD amarrage

Cela tombe en panne dans le composant de diffusion en continu. L’examen visuel du fichier DFM ne montre rien de mal, mais il existe un blob binary opaque pour les informations de mise en page susceptibles de le provoquer. Cela n’est pas particulièrement encourageant dans une version d’évaluation.

DevExpress ExpressDocking

J’avais de grands espoirs pour cela: je n’ai jamais utilisé de contrôles DevExpress auparavant mais ils ont une bonne réputation. Mais leur programme de démonstration était vraiment décevant:

DevExpress docking

Le contrôle scintille et ne semble pas bien thème avec Windows, même en utilisant le style XP. Il a un ancrage à tabs, mais il utilise un contour XOR-ed – quelque chose qui ne fonctionne pas bien sur XP ou Vista. Il n’a pas non plus de widget d’accueil. Franchement, il semble que ce ne soit pas mis à jour depuis les jours de Windows XP. Mise à jour Juillet 2011: Ceci est en cours d’amélioration .

Bibliothèque d’accueil AutomatedQA / SmartBear

C’est la plus prometteuse de toutes les bibliothèques à ce jour.

AutomatedQA docking library

J’utilise régulièrement AQTime , un excellent profileur qui semble être écrit en utilisant sa propre bibliothèque d’ancrage, et cela fonctionne bien. Cependant, la version la plus récente du téléchargement de la version d’évaluation de la bibliothèque d’ancrage est pour RAD Studio 2009, et les conseils d’installation pour 2010 indiquent que cette version n’est pas prise en charge et que vous devez recomstackr la source. La démo ne vient pas avec source, et nous n’avons pas RS2009, et l’installateur refuse de l’installer à moins que nous le fassions, et même si nous devions l’installer, nous ne pouvons pas l’utiliser car nous aurions besoin de recomstackr le fichier. source inexistante.

J’ai été en contact avec leur équipe de support et ils m’ont montré ce fil . J’ai aussi trouvé un autre fil avec les clients demandant la même chose . J’ai répondu et j’espère entendre de meilleures nouvelles. Je ne souhaite pas recommander l’achat d’un produit que je ne peux pas évaluer, en particulier lorsqu’il n’est pas pris en charge par notre IDE.

  • Mise à jour: j’ai fini par acheter cette bibliothèque. Malgré les problèmes d’évaluation (cela fonctionne dans D2007, et j’en avais une copie), il semble que ce soit le plus facile à utiliser de toutes les bibliothèques, et aussi le plus puissant – il est facile d’écrire un thème pour lui, par exemple. Je le recommanderais certainement si vous devez également sélectionner une bibliothèque d’accueil.

  • Mise à jour Juillet 2011: cette bibliothèque n’est plus vendue, mais pourrait être ouverte prochainement .

Qu’est-ce que j’ai raté?

C’est tout ce que j’ai trouvé jusqu’ici. Et maintenant?

  • Ai-je manqué de bonnes bibliothèques d’accueil pour Delphi / C ++ Builder / RAD Studio 2010?
  • Ai-je manqué des fonctionnalités dans les bibliothèques que j’ai consultées jusqu’à présent? Une réponse comme “Vous avez manqué FooBar” ou “JVCL a effectivement un widget d’accueil, et vous pouvez l’utiliser comme si …” serait vraiment génial à entendre.
  • Que recommanderiez-vous comme prochaine étape?

Merci pour votre consortingbution 🙂

J’ai utilisé JCL, j’ai LMD, DevExpress et Automated QA Docking Library.

La bibliothèque Docking d’AutomatedQA est la plus proche de vos besoins. Je l’utilise dans mon travail pour l’un de mes projets.

Votre prochaine étape, achetez la bibliothèque AutomatedQA 🙂

d’un client heureux.

Je suis un développeur jedi JVCL et j’ai utilisé JvDocking dans mes propres projets commerciaux internes, et je l’ai trouvé solide et fiable.

En outre, c’est gratuit. C’est facile à étendre. Il crée un aspect similaire à celui de la version de studio visuelle de 2008.

Je n’ai pas trouvé une seule bibliothèque qui fasse tout ce que je voudrais, alors après avoir fait quelques expériences, j’ai découvert que je pouvais faire presque tout ce que je voulais en utilisant les contrôles NVCLD (Native VCL Docking) avec une série de modifications personnalisées. contrôles.

Ce qui suit est une liste de choses que j’ai rencontrées pour que la NVCLD fonctionne comme je le souhaitais. Je n’ai pas eu beaucoup de problèmes de portage entre les versions, mais c’est aussi parce que j’ai la src.

Si vous ne cherchez pas à rouler vous-même ou si vous voulez vraiment utiliser une bibliothèque tierce, vous pouvez probablement arrêter de lire le rest. 🙂

Composants supplémentaires:

  1. TDockPanel

    Ce panneau d’amarrage fortement modifié est le cheval de bataille de mon système. J’ai trouvé l’original sur le net mais je l’ai modifié depuis pour apporter un peu plus de souplesse à mes besoins.

  2. Formulaires d’accueil personnalisés ( formulaire de base)

    En utilisant une classe de base personnalisée pour mes formulaires d’ancrage et en l’héritant en cas de besoin, j’ai moins de modifications à effectuer sur tous les formulaires descendants.

Modifications personnalisées

Ce sont des modifications apscopes aux fichiers .pas des composants NVCLD eux-mêmes. La plupart de ces modifications ne doivent plus être effectuées en raison de certaines améliorations apscopes aux commandes de base à partir de D2009. Vous devriez pouvoir créer un nouveau descendant et implémenter les modifications dans le fichier au lieu de modifier directement les fichiers src par défaut.

  1. Formulaires d’accueil transparents

    Par défaut (bien sûr avant 2009), la NVCLD ne prend pas en charge le mouvement de formulaire transparent. Il y a quelques années, un correctif JVCL a ajouté ce support à la JVCL, qui était simple à intégrer dans un patch NVLCD.

  2. Gestionnaire d’amarrage

    Le gestionnaire d’accueil par défaut (pré-2009 à l’évidence) n’autorisait pas les images de boutons plus récentes ou personnalisées ni les modifications d’en-tête d’ancrage. Cela a été corrigé dans D2009 je crois quand les méthodes nécessaires ont été rendues virtuelles.

  3. Accrochage à tabs

    Pour prendre en charge les composants d’accueil supplémentaires, je devais modifier le fichier DockTabSet.pas pour prendre en charge les propriétés d’ancrage supplémentaires utilisées par les composants supplémentaires. La plupart de ces modifications ont été corrigées lorsque le gestionnaire d’amarrage a été modifié comme indiqué précédemment.

Comme je l’ai indiqué la plupart de ces modifications que j’ai apscopes directement aux fichiers Delphi Src et que vous ne devriez pas avoir à faire cela pour les versions plus récentes de Delphi. Ce que je veux dire, c’est qu’avec un peu de travail en amont, vous pouvez avoir un système d’ancrage assez robuste sans recourir à une bibliothèque tierce. Non pas qu’il y ait quelque chose qui ne va pas chez l’un d’entre eux, mais je préfère ne pas les utiliser à moins que je n’aie pas d’autre choix ou que je n’ai pas le temps de le faire fonctionner à ma façon.