Pages

Friday, May 5, 2006

MDI Chidren Windows Management on Vb.NET

Managing windows on a visual basic application has changed a lot since version 6.0, back then you had a direct reference to windows as instantiated objects, but in .NET this has changed and even if somebody disagrees , I think is for the best.
However there are ways to obtain the a similar functionality when handling windows, On this occasion we will see these tricks to handle MDI forms.
As we know MDI applications consist on a Parent Form inside which the other forms called Children are shown.
A very common problem we face with MDI forms is not being able to know if the children forma are already created, and if they are created, how to pass a message or have a direct reference to objects inside of them. 

Besides this solution comes handy when your need a children form to communicate to another children form. And to control that there are no duplicate children forms, if that's what you wish. Well, the implementation is as follows:

First step - Shared Module:

As a first step you must create a module in which you can declare the form objects you want to use, for example suppose we have two children forms, frm_studet and frm_course :

Module children_forms

    Public objstudent As frm_student
    Public objcourse As frm_course

End Module 
 
In this case we have two forms to control.

Manejo de MDI childrens en VB.NET (esp)

El manejo de ventanas ha cambiado mucho desde la versión 6.0 de visual basic, en ese entonces se tenia una referencia directa a las ventanas como objetos instanciados, pero en .NEt esto ha cambiado y aunque algunos no estén de acuerdo yo creo que para mejor.
Sin embargo hay maneras de obtener una funcionalidad similar en el manejo de ventanas, en esta ocasión veremos estos principios orientados al manejo de formularios MDI.
Como sabemos las aplicaciones MDI consisten de un formulario Padre dentro el cual se despliegan las demás ventanas llamadas HIjas.
Un problema común con el que nos encontramos a veces con formularios MDI es el no poder saber si los formularios hijos ya se crearon o no, y en el caso de estar creados como pasarles un mensaje o hacer referencia a objetos dentro de estos. Además esta solución viene útil cuando se necesita que un formulario hijo se comunique con otro formulario hijo. Y para controlar que no haya formularios hijos repetidos si es que eso deseamos. Bueno la manera de implementación es la siguiente:

Primer Paso - Modulo compartido:

Como primer paso debe crear un modulo en el cual declare los objetos de los formularios a usar, por ejemplo:

Module ventanas

    Public abmacactivo As abmacactivo
    Public abmacaseguradora As abmacaseguradora
    Public abmacnumeracion As abmacnumeracion
    Public abmacseguro As abmacseguro
End Module 
 
En esta caso tendriamos cuatro ventanas que deseamos controlar.