Pregunta

Primero que todo, ya que estoy usando VB6, confine sus amables sugerencias a las técnicas aplicadas a VB6.

alt text

Tengo un conjunto de controles relacionados entre sí como muestra la figura anterior. Incluye varias vistas de árbol, una barra de división, una vista de lista, un subformulario (un control de usuario), etc.

Cuando hago clic o cambio los nodos de vista de árbol en la izquierda, los controles de la derecha cambiarán su visualización en consecuencia, y viceversa.

Los datos detrás de la escena se mantienen en una base de datos de Access.

Este conjunto de gestión y visualización de datos se utiliza en varias aplicaciones diferentes. Así que escribí varias clases para implementar la lógica e incluir estos módulos de clases una y otra vez en mis aplicaciones.

Así que en realidad soy REUSAR mis clases en " copiar y pegar " modo. Funciona pero tiene problemas. Si hago un cambio en una clase, tengo que cambiarlo en varias aplicaciones.

En estos días estoy pensando en convertirlos en los llamados componentes ActiveX. Pero no estoy seguro de qué tipo de componentes ActiveX debo desarrollar para reutilizar toda la arquitectura.

En pocas palabras, quiero saber cómo puedo reutilizarlo con más gracia que simplemente " copiar y pegar " ;. A continuación se muestran algunas ideas o expectativas de la nueva " REUSIÓN agraciada " ;, pero no se limita a ellas.

(1) Espero que se vea como un control ActiveX que tenga una página de propiedades para poder establecer algunas de sus propiedades durante el tiempo de diseño.

(2) Para diferentes aplicaciones, el subformulario de la derecha puede mostrar información diferente, tiene diferentes controles y puede necesitar codificación y diseño adicionales.

(3) También es posible que deba codificar algún comportamiento nuevo para la vista de árbol y la vista de lista para diferentes aplicaciones. Este requisito hace que todo un control de usuario para toda la forma no sea adecuado. porque MSDN dijo que & # 8220; Las referencias a los controles ActiveX & # 65292; nunca deben devolverse a las aplicaciones cliente & # 12290; "

¿Fue útil?

Solución

  • Crear una DLL ActiveX (no control)
  • Defina una interfaz para el formulario en
    el DLL
  • Mueva toda su lógica a una o más clases en la DLL y haga que las rutinas interactúen con el formulario a través de la interfaz
  • Implementar la interfaz en el formulario
  • Una inicialización de la aplicación tiene el formulario registrado con la DLL ActiveX

Esto eliminará efectivamente la copia y el pegado entre las diferentes aplicaciones.

Por ejemplo, para mi aplicación de corte de metal tengo una Forma de Forma, una clase de Pantalla de Forma, y ??un montón de clases de forma. Dos de los métodos de la clase de forma son DrawScreen que tiene parámetros de tipo ShapeScreen y GetValues ??que también tiene un parámetro de tipo ShapeScreen.

DrawScreen usa el método de ShapeScreen para configurar la pantalla de entrada y Shape Screen para configurar el formulario a través de la interfaz IShapeForm. GetValues ??usa métodos de pantalla de forma para obtener los valores de forma ingresados, que a su vez usa IShapeForm para obtener los valores del formulario.

Esta configuración resultó útil cuando tuvimos que desarrollar formularios de entrada de formas diferentes en respuesta a las solicitudes de los clientes. La nueva forma solo implementó la interfaz IShapeForm y el resto del software quedó intacto.

Otros consejos

Tal vez debería encapsular cada uno de los controles a un control de usuario y luego hacer un control ActiveX virtual (sin interfaz visual) para organizar estos controles en una sola cosa.

Parece que lo que tienes es una vista, lógica de dominio y datos. Su principal problema que preveo es el elemento dos, no es estático en apariencia y lógica de una aplicación a otra. Tal vez lo que necesitas son dos controles separados? Panel izquierdo y panel derecho. El panel derecho probablemente va a implementar algún tipo de matriz de controles, ya que no van a ser estáticos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top