Crear objeto
La forma más sencilla de crear un objeto es hacer doble clic en el control en la Caja de herramientas. Sin embargo, para aprovechar al máximo todos los objetos disponibles en Visual Basic y en otras aplicaciones, puede utilizar las capacidades de programación de Visual Basic para crear objetos en tiempo de ejecución.
1. Crear referencia de objeto con variable de objeto
2. Utiliza módulos de clase para crear tus propios objetos "desde cero"
3. Crea tu propia colección usando objetos de colección.
Los detalles sobre cómo acceder a los objetos se proporcionan en otros capítulos. Por ejemplo, las funciones CreateObject y GetObject se analizan en el Capítulo 10, "Programación con componentes".
Usar variables de objeto
Además de almacenar valores, las variables pueden hacer referencia a objetos. Al igual que asignar un valor a una variable, puedes asignar un objeto a una variable por las mismas razones:
1. Los nombres de las variables tienden a ser más cortos y más fáciles de recordar que los valores que contienen (o, en este caso, los objetos a los que hacen referencia).
2. Al ejecutar código, las variables deben cambiarse para hacer referencia a otros objetos.
3. Hacer referencia a la variable que contiene el objeto es más eficaz que hacer referencia repetidamente al objeto mismo.
Usar variables de objeto es lo mismo que usar variables regulares, excepto que hay un paso adicional para asignar el objeto a la variable:
4. Primero declare las variables:
DimvariableAsclass
5. Luego asigna el objeto a la variable:
Establecervariable=objeto
Declarar variables de objeto
El método para declarar variables de objeto es el mismo que para declarar otras variables, usando Dim, ReDim, Static, PRIvate y Public. La única diferencia son los parámetros opcionales Nueva palabra clave y Clase, que se presentarán más adelante en este capítulo. La sintaxis es:
{Dim|ReDim|Estático|Privado|Público}variableComo clase [nueva]
Por ejemplo, puedes declarar una variable de objeto que haga referencia a un formulario en tu aplicación llamado frmMain:
DimFormVarAsNewfrmMain 'Declarar un tipo como frmMain
'variable de objeto.
También puedes declarar una variable de objeto que haga referencia a cualquier formulario en tu aplicación:
DimanyFormAsForm 'Variables de formulario generales.
De manera similar, puedes declarar una variable de objeto que pueda hacer referencia a cualquier cuadro de texto en tu aplicación:
DimanyTextAsTextBox 'puede hacer referencia a cualquier cuadro de texto
' (pero sólo un cuadro de texto).
También puedes declarar una variable de objeto, que puede hacer referencia a cualquier tipo de control:
DimanyControlAsControl 'Variables de control generales.
Tenga en cuenta que puede declarar una variable de formulario que haga referencia a un formulario específico en su aplicación, pero no puede declarar una variable de control que haga referencia a un control específico. Puede declarar una variable de control que haga referencia a un tipo específico de control (como TextBox o ListBox), pero no a un control específico de ese tipo (como txtEntry o List1). Sin embargo, se pueden asignar controles específicos a variables de ese tipo. Por ejemplo, un formulario con un cuadro de lista lstSample podría codificarse así:
DimobjDemoAsListBox
SetobjDemo=lstMuestra
Variable de objeto de asignación
Utilice la instrucción Set para asignar el objeto a la variable de objeto:
Establecervariable=objeto
Siempre que desee que una variable de objeto haga referencia a un objeto, puede utilizar la instrucción Set.
A veces puedes usar variables de objeto, especialmente variables de control, para acortar directamente el código que escribes. Por ejemplo, el código original se ve así:
IffrmAccountDisplay!txtAccountBalance.Text<0Entonces
frmAccountDisplay!txtAccountBalance.BackColor=0
frmAccountDisplay!txtAccountBalance.ForeColor=255
Fin si
Si utiliza variables de control, su programa se puede acortar significativamente:
DimBalAsTextBox
SetBal=frmAccountDisplay!txtCuentaSaldo
IfBal.Text<0Entonces
Bal.BackColor=0
Bal.ForeColor=255
Fin si
Tipos de objetos específicos frente a tipos de objetos generales
Una variable de objeto específica debe hacer referencia a un tipo específico de objeto o clase. Una variable de formulario específica puede hacer referencia solo a un formulario en la aplicación (aunque se puede hacer referencia a ella en una de las muchas instancias de ese formulario). De manera similar, una variable de control específica solo puede hacer referencia a un tipo específico de control en la aplicación, como un TextBox o un ListBox. Vea un ejemplo, abra un nuevo proyecto y coloque un cuadro de texto en el formulario. Agregue el siguiente código al formulario:
PrivadoSubForm_Click()
DimanyTextAsTextBox
Establecer cualquier texto=Texto1
anyText.Text=Hola
FinSub
Ejecute la aplicación y haga clic en el formulario. La propiedad Texto del cuadro de texto cambiará a Hola.
Las variables de objeto generales pueden hacer referencia a uno de varios tipos de objetos específicos. Por ejemplo, una variable de formulario general puede hacer referencia a cualquier formulario de la aplicación; una variable de control general puede hacer referencia a cualquier control de cualquier formulario de la aplicación. Vea un ejemplo, abra un nuevo proyecto y coloque varios controles Marco, Etiqueta y Botón de comando en cualquier orden en el formulario. Agregue el siguiente código al formulario:
PrivadoSubForm_Click()
DimanyControlAsControl
SetanyControl=Form1.Controls(3)
anyControl.Caption=Hola
FinSub
Ejecute el programa y haga clic en el formulario. El título del tercer control que acaba de colocar en el formulario cambiará a Hola.
Hay cuatro objetos generales en Visual Basic:
Las variables de objeto generales son útiles cuando no se sabe en tiempo de ejecución si la variable se refiere a un objeto de un tipo específico. Por ejemplo, si desea escribir código que funcione en cualquier formulario de su aplicación, debe utilizar variables de formulario generales.
Tenga en cuenta que, dado que solo puede haber un formulario MDI en la aplicación, no es necesario utilizar el tipo MDIForm general. Siempre que necesite declarar una variable de formulario que haga referencia a un formulario MDI, puede usar un tipo MDIForm específico (ya sea MDIForm1 o cualquier nombre que especifique en la propiedad Nombre del formulario MDI) en lugar del tipo MDIForm general. De hecho, siempre debe utilizar un tipo MDIForm específico porque Visual Basic puede determinar las propiedades y métodos que hacen referencia a un tipo de formulario específico antes de ejecutar la aplicación.
El tipo MDIForm general se proporciona sólo para completarlo; será útil en versiones futuras de Visual Basic para tener varios formularios MDI en una sola aplicación.
forma como objeto
Los formularios se utilizan más comúnmente para construir interfaces de aplicaciones, pero también suelen ser objetos llamados por otros módulos de la aplicación. Los formularios están estrechamente relacionados con los módulos de clase. La principal diferencia entre los dos es que los formularios son objetos visuales, mientras que los módulos de clase no tienen una interfaz visual.
Agregar métodos y propiedades personalizados
Se pueden agregar métodos y propiedades personalizados al formulario y acceder a ellos desde otros módulos de la aplicación. Para crear nuevos métodos para un formulario, agregue un procedimiento declarado con Público.
'Método para personalizar Form1.
PublicSubLateJobsCount()
.
'<declaraciones>
.
FinSub
El procedimiento LateJobsCount se puede llamar desde otros módulos utilizando la siguiente declaración:
Formulario1.LateJobsCount
Crear nuevas propiedades para un formulario es tan simple como declarar una variable pública en el módulo del formulario:
NúmeroIDpúblicocomoentero
Las dos declaraciones siguientes se pueden utilizar para establecer y devolver el valor IDNumber de Form1 desde otros módulos:
Formulario1.NúmeroID=3
Texto1.Texto=Formulario1.NúmeroID
También puede utilizar el procedimiento Propiedad para agregar propiedades personalizadas a un formulario.
Detalles El Capítulo 9, "Programación con objetos", proporciona material detallado sobre el procedimiento de propiedad.
Tenga en cuenta que puede llamar a las variables del formulario o a los métodos personalizados sin cargar el formulario, y también puede configurar las propiedades personalizadas del formulario. Como resultado, puede ejecutar código sobre el formulario sin cargarlo en la memoria. Del mismo modo, hacer referencia a un control sin hacer referencia a sus propiedades o métodos no cargará el formulario.
Utilice la nueva palabra clave
Utilice la palabra clave New para crear un nuevo objeto, que se trata como el objeto definido por su clase. New se puede utilizar para crear instancias de colecciones, formularios y clases definidas en módulos de clase.
Utilice la nueva palabra clave en un formulario
Los formularios creados en tiempo de diseño son clases. Se pueden crear nuevas instancias de esta clase usando la palabra clave New. Para ver este proceso en acción, dibuje un botón de comando y varios otros controles en el formulario. En la ventana Propiedades, establezca la propiedad Nombre del formulario en Muestra. Agregue el siguiente código en el procedimiento de evento Click del botón de comando:
DimxComoNuevaMuestra
x.Mostrar
Ejecute la aplicación y haga clic en el botón de comando varias veces. Mueva el formulario del frente a un lado. Debido a que el formulario es una clase con una interfaz visual, se ven copias adicionales. Cada formulario tiene los mismos controles en las mismas ubicaciones donde se diseñó el formulario.
Tenga en cuenta que para que las variables de formulario y las instancias de formularios cargados siempre existan, utilice variables estáticas o públicas en lugar de variables locales.
También puede utilizar la palabra clave New con la declaración Set. Pruebe el código en el procedimiento del evento Click del botón de comando:
DimfAsForm1
Setf=NuevoForm1
f.Caption=hola
f.Mostrar
El uso de la palabra clave New con la instrucción Set acelerará la ejecución, por lo que se recomienda este método.
Utilice la palabra clave Nueva con otros objetos
Puede utilizar la palabra clave Nueva para crear colecciones y objetos a partir de clases definidas en un módulo de clase. Utilice el siguiente ejemplo para ilustrar este proceso de trabajo.
Este ejemplo ilustra cómo la palabra clave New crea una instancia de una clase. Abra un nuevo proyecto y dibuje un control CommandButton en Form1. Seleccione el comando Agregar módulo de clase en el menú Proyecto para agregar un módulo de clase al proyecto. Establezca la propiedad Nombre del módulo de clase en ShowMe.
El siguiente código en Form1 crea una nueva instancia de la clase ShowMe y llama a un procedimiento contenido en el módulo de clase.
PublicclsNewAsShowMe
PrivadoSubCommand1_Click()
SetclsNew=NuevoMuéstrame
clsNew.ShowFrm
FinSub
El procedimiento ShowFrm en el módulo de clase crea una nueva instancia de la clase Form1, muestra el formulario y luego lo minimiza.
SubShowFrm()
DimfrmNuevoAsForm1
SetfrmNew=NuevoForm1
frmNuevo.Mostrar
frmNew.WindowState=1
FinSub
Para aplicar este ejemplo, ejecute la aplicación y haga clic en el botón de comando varias veces. Verá aparecer un icono de formulario minimizado en el escritorio a medida que se crea cada nueva instancia de la clase ShowMe.
Para obtener más información sobre el uso de New para crear objetos, consulte el Capítulo 10, "Programación con componentes".
Nuevas restricciones de palabras clave
La siguiente tabla explica lo que no puede hacer con la palabra clave Nueva.
Liberar la referencia al objeto.
Cada objeto utiliza memoria y recursos del sistema. Es una buena práctica de programación liberar estos recursos rápidamente cuando el objeto ya no se utiliza.
Utilice Descargar para descargar un formulario o control de la memoria.
Utilice Nothing para liberar los recursos ocupados por las variables de objeto. Utilice la instrucción Set para asignar Nothing a la variable de objeto.
Para obtener más información, consulte las secciones "Descargar evento" y "Nada" en el "Manual de referencia del lenguaje Visual Basic 6.0".
Pasar objeto al procedimiento
Los objetos se pueden pasar a procedimientos en Visual Basic. En el siguiente ejemplo de código, se supone que el formulario tiene un control CommandButton:
PrivadoSubCommand1_Click()
'Llame a la subrutina Demo y pásele el formulario.
DemoForm1
FinSub
PrivateSubDemo(xAsForm1)
'Centra el formulario en la pantalla.
x.Izquierda=(Pantalla.Ancho-x.Ancho)/2
FinSub
Puede pasar un objeto a un parámetro por referencia y luego establecer el parámetro en un nuevo objeto dentro del procedimiento. Para ver esto en acción, abra el proyecto e inserte un segundo formulario. Coloque un cuadro con una imagen en cada formulario. Los valores de configuración de atributos que deben cambiarse se muestran en la siguiente tabla:
El procedimiento de evento Form1_Click llama al procedimiento GetPicture en Form2 y le pasa un cuadro de imagen vacío.
PrivadoSubForm_Click()
Formulario2.GetPicturePicture1
FinSub
El proceso GetPicture en Form2 asigna la propiedad Imagen del cuadro de imagen en Form2 al cuadro de imagen vacío en Form1.
PrivateobjXapictureBox
PublicSubGetPicture(xAsPictureBox)
'Asigne el marco de imagen pasado a la variable de objeto.
EstablecerobjX=x
'Asigne el valor del atributo Imagen al cuadro de imagen de Form1.
objX.Picture=imagen2.Imagen
FinSub
Para aplicar este ejemplo, ejecute el programa y haga clic en Form1. Verá que el icono de Form2 aparece en el cuadro de imagen de Form1.
Detalles Los temas anteriores tienen como objetivo proporcionar una descripción general de los objetos. Para obtener más detalles, consulte el Capítulo 9, "Programación con objetos" y el Capítulo 10, "Programación con componentes".
->