• Viernes 8 de Noviembre de 2024, 17:52

Autor Tema:  Carga de Formulario Dinamico desde .exe  (Leído 1405 veces)

Brokerman

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Carga de Formulario Dinamico desde .exe
« en: Domingo 26 de Octubre de 2008, 22:41 »
0
Buenas Noches,

He visto en algunas aplicaciones que funcionan de una forma muy buena, me explico. He visto que para poderse ampliar de una forma muy buena, lo que hace es tener un formulario MDI y generar el menu dependiendo de una tabla de base de datos, del modo que cada tabla tiene asociado un icono, el nombre del programa y una ruta de dll en la que esta el formulario.

Teniendo esto, lo que hace es que tu creas una nueva pantalla y la generas en una dll (capa de presentacion), y luego das de alta en esa tabla un registro, automaticamente aparece en el menu y al pulsar en ella, lo que hace es abrir ese formulario creado en la dll. (la ruta que se pone es del tipo nombredll.nombre formulario.

en definitiva lo que se tiene es:
- un ejectuable exe.
- una dll.
- una tabla en base de datos para hacer esto.

pues bien despues de todo este chorizo de texto, mi pregunta es. ¿Como se puede realizar esto para cargar el formulario que esta en otra dll?
Espero haberme explicado bien.
Un saludo y Gracias por adelantado.

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: Carga de Formulario Dinamico desde .exe
« Respuesta #1 en: Lunes 27 de Octubre de 2008, 12:58 »
0
Que quieres que te diga...  :brickwall:  si para añadir funcioalidad a un programa sin rescribir ese programa, lo que haces es rescribir una dll, dónde está la diferencia ?.

Tienes 2 aplicaciones una es la que muestra la interfaz de ejecución y otra oculta es esa dll , tu interfaz (la ventana 1) lo primero que hace cuando arranca es ejecutar una función de la dll,  leer_el listado_de_'formularos'_disponibles, el cual le devuelve una matriz con un númerito (no absolutamente necesario), unos iconos (como matriz de long por ejemplo) y el nombre de los mismos. Esa matriz la metes en un menú 'principal'

Luego Cuando pulse en uno de esos formularios disponibles, lo que hace es llamar a la dll que muestra ese formulario dentro desí pero que está oculto y con un setparent (por ejemplo) se transfiere desde la dll a la aplicación, puedes transferir el formulario completo, o sólo un panel donde reposa lo principal, ó un panel y un menú... en fin eso ya es a tu gusto.

No es necesario disponer y usar desde una base de datos, de hecho creo que eso lo que hace es complicarlo, a cambio puedes en la dll tener una estructura equivalente a esa tabla de una bd, gestionada por una clase... con métodos tales como listar_formularios genera la matriz de items: (item, nombre, icono, descripción...) , listar_objetos_aTransferir  lista de los objetos a los que haremos un setparent dado un item de referencia, ... etc... en la dll cuando se invoquen las llamadas la clase crea dichos listados y la función ejecuta dicha devolución.

Pero date cuenta que al caso la interfaz que no quieres modificar en realidad es un cascarón hueco con una funcionalidad mínima justo para invocar la dll, por lo que no modificar la aplicación pero modificar la dll es sólo una cuestión en la práctica, vana.

Por ahí debo tener un código parecido a esto sólo que creo recordar que no eran ficheros separados, pero al caso es lo mismo, si ves que no eres capaz de sacarlo por tí mismo, me lo indicas y lo buscaría haría alguna adaptación para eliminar todo el código que no es estrictamente explicativo del ejemplo y lo subiría.
«Ma non troppo»
----> ModoVacaciones = False<----