Question

Tout d'abord, comme j'utilise VB6, veuillez limiter vos suggestions aux techniques appliquées à VB6.

alt text

J'ai un ensemble de commandes liées les unes aux autres, comme le montre la figure ci-dessus. Il comprend plusieurs arborescences, une barre de division, une liste, un sous-formulaire (un contrôle utilisateur), etc.

Lorsque je clique sur les noeuds de l'arborescence à gauche ou que je les modifie, les commandes de droite changent d'affichage en conséquence, et inversement.

Les données derrière la scène sont conservées dans une base de données Access.

Cet ensemble de gestion et d’affichage des données est utilisé dans plusieurs applications différentes. J'ai donc écrit plusieurs classes pour implémenter la logique et inclure ces modules de classes encore et encore dans mes applications.

Je suis donc en train de REUTILISER mes classes dans un "copier-coller". mode. Cela fonctionne mais cela pose des problèmes. Si je modifie une classe, je dois le changer dans plusieurs applications.

Ces jours-ci, je songe à en faire les soi-disant composants ActiveX. Mais je ne suis pas sûr du type de composants ActiveX que je devrais développer pour réutiliser toute l’architecture.

En un mot, je souhaite savoir comment puis-je le réutiliser plus gracieusement qu'un simple "copier-coller". Vous trouverez ci-dessous quelques idées ou attentes concernant le nouveau "gracieux REUSE", mais ne vous y limitez pas.

(1) J'espère que cela ressemble à un contrôle ActiveX qui a une page de propriétés afin de pouvoir en définir certaines propriétés lors de la conception.

(2) Pour différentes applications, le sous-formulaire de droite peut afficher des informations et des contrôles différents, ainsi que des opérations de codage et de conception supplémentaires.

(3) De plus, je pourrais avoir besoin de coder un nouveau comportement pour l'arborescence et la listview pour différentes applications. Cette exigence rend tout un contrôle utilisateur pour la forme entière non appropriée. MSDN ayant déclaré: "Les références aux contrôles ActiveX" ne doivent jamais être renvoyées aux applications clientes & # 12290; "

.
Était-ce utile?

La solution

  • Créer une DLL ActiveX (pas de contrôle)
  • Définir une interface pour le formulaire en
    la DLL
  • Déplacez toute votre logique dans une ou plusieurs classes de la DLL et que les routines interagissent avec le formulaire via l'interface
  • Implémentez l'interface sous la forme
  • Une initialisation de l'application a le formulaire s'inscrire avec la DLL ActiveX

Ceci éliminera efficacement le copier-coller entre les différentes applications.

Par exemple, pour mon application de découpe de métal, j'ai une classe Shape Form, une classe Shape Screen et plusieurs classes de formes. DrawScreen, dont les paramètres sont de type ShapeScreen, et GetValues, qui possède également un paramètre de type ShapeScreen, sont deux des méthodes de la classe de forme.

DrawScreen utilise la méthode de ShapeScreen pour configurer l’écran de saisie et Shape Screen pour configurer le formulaire via l’interface IShapeForm. GetValues ??utilise les méthodes Shape Screen pour obtenir les valeurs de forme saisies qui, à leur tour, utilise IShapeForm pour obtenir les valeurs du formulaire.

Cette configuration s’est révélée utile lorsque nous avons dû développer différents formulaires de saisie de forme en réponse aux demandes des clients. Le nouveau formulaire vient de mettre en œuvre l'interface IShapeForm et le reste du logiciel n'a pas été modifié.

Autres conseils

Peut-être devrais-je encapsuler chacun des contrôles dans un contrôle utilisateur, puis créer un contrôle ActiveX virtuel (sans interface visuelle) pour organiser ces contrôles en une chose unie.

On dirait que vous avez une vue, une logique de domaine et des données. Votre problème majeur que je prévois est le point deux, il n’est pas statique en apparence et la logique d’une application à l’autre. Peut-être avez-vous besoin de deux contrôles distincts? Panneau gauche et panneau droit. Le panneau de droite va probablement implémenter un tableau de types de contrôles, car ils ne seront pas statiques.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top