Curso
Básico de Programación
en Visual Basic
Entrega Veintisiete: 14/Ene/99
por Guillermo "guille" Som
Si quieres linkar con las otras entregas, desde el índice lo puedes hacer
Ha pasado un largo tiempo, ¿verdad? aunque en otras ocasiones las esperas han sido aún más largas, así que no te quejes demasiado... De todas formas, aunque ya lo habrás notado, las últimas entregas que estoy publicando ya las tenía escrita desde hacía un montón de tiempo, esta en particular desde el 7 de Octubre del 98, pero la pereza unida a la falta de tiempo... hacen que se retrasen en publicar, pero ya sabes que esto de "mecanografiar" no es lo mio... pero más vale tarde que nunca.
Y ahora vamos a ver de que va todo esto y a ver si vale la pena, esperar tanto...
Propiedades, métodos... y lo que se me ocurra
Una vez vistos los eventos, al menos los más usuales, vamos a tratar ahora con las propiedades y métodos de los formularios y controles.
¿Que es una propiedad?
Una propiedad, simplificando para que se entienda, es una información o dato "propio" del objeto; por ejemplo, un "objeto" label tiene una propiedad Caption que le indica lo que tiene que mostrar.
Las propiedades son como variables que le indican al control o formulario y por extensión a todos los objetos, qué mostrar, cómo mostrarse o hacer cualquier otra cosa... sino hacer, al menos tener información para poder hacer algo...Veamos más ejemplos, así conocerás algunas propiedades "comunes" a la mayoría de controles:
Width Indica el ancho del control. Cambiando el valor de esta propiedad, cambiamos el ancho del control... como es de suponer... Height El alto del control, si queremos cambiarlo... Top La posición superior del control. Normalmente hace referencia al control que lo contiene. Un form normal, hará referencia a la posición en la pantalla. Left La posición izquierda del control. Mismo comentario que para Top Visible Si se muestra o no Enabled Si está disponible o no. Name El nombre del control u objeto. Tag Para usos "personalizados", es como una especie de variable que tiene cada control, en el que podemos guardar lo que queramos y no afectará al aspecto y/o funcionamiento del control. Caption Esta no está presente en todos los controles, pero es típico para los botones command y las etiquetas. Sirve para contener el texto a mostrar. Text Esta tampoco es común a todos los controles, pero también sirve para mostrar texto, aunque normalmente los controles que la tienen suelen permitir que ese texto se modifique, el caso típico son los TextBox. Y como estas, muchas más, para saber las propiedades que tiene un control, busca en la ayuda y te dirá las que dispone... je,je... a ver si os acostumbro a pulsar F1 y me ahorro seguir con las entregas...
No es que yo no quiera decírtelo, pero me parece absurdo documentar algo que ya está documentado y aunque no te lo creas bastante bien... aunque habrá algunas propiedades que necesitarán de alguna explicación y ejemplos... y esas, casi seguro, que las veremos.
Ahora vamos con los métodos.
Los métodos no son otra cosa que procedimientos (SUB o FUNCTION).
Un método siempre hace algo, a diferencia de las propiedades que, aunque también pueden hacer algo, su papel suele ser parecido a una variable; por ejemplo, si queremos ocultar un formulario, llamamos al método Hide, que queremos mover el formulario, pues usamos Move con los parámetros correspondientes y asunto arreglado.
Es decir, son procedimientos normales y corrientes, pero su comportamiento está relacionado con el objeto, control o formulario, al que pertenece.
Muchas veces a las funciones se las considera propiedades en lugar de métodos, a esta "opinión" no debes darle más importancia de la que tiene y centrarte en lo que realmente te interesa: aprender a usarlas e incluso a crearlas.
Para saber más sobre los métodos... te digo lo mismo que con las propiedades, pulsa F1 y leete la ayuda.
Algunas propiedades son sólo de lectura, es decir que no puedes modificarla en tiempo de ejecución, aunque normalmente si las que puedes modificar en tiempo de diseño, es decir cuando estás trabajando en el IDE del Visual Basic (¡bien! es la primera vez que sale el nombre en lo que llevo escrito... no te preocupes, este desvarío debe ser a causa del "catarro" que tengo)
Por ejemplo, la propiedad Sorted que le indica a un ListBox si debe mostrar los elementos clasificados o no, es de sólo lectura cuando ejecutamos el programa, pero mientras "diseñamos" el proyecto, nos permite cambiar ese valor.
Como el título de esta entrega decía: Propiedades, métodos y lo que se me ocurra, se me ocurre comentarte que con el VB5 y superior, puedes crearte tus propios controles, ¿para que? para personalizar su funcionalidad a tu gusto o a tus necesidades... pero si no tienes el VB5, aún puedes seguir leyendo, ya que no voy a explicar nada, al menos por ahora, que no puedas hacer con el VB4 (lo siento por los que usen VB3, aunque tampoco vendría mal seguir leyendo).
Cuando apareció el VB4, además de permitir crear aplicaciones de 32 bits, tanto el Windows 95 como el Windows NT son sistemas operativos que "soportan" aplicaciones de 32 bits, aunque también funcionan las de 16 bits; sin embargo el Windows 3.xx sólo soporta aplicaciones de 16 bits, aunque con un "apaño" permite ejecutar algunas de 32 bits... aunque no las de VB... ¿a que venía todo esto?
Como intentaba decirte antes de "desvariar", con el VB4 llegó la primera intentona de Microsoft para hacer del Visual Basic un lenguaje orientado a objetos, en este punto te podría contar cómo llamaban la gente de Microsoft a esta versión del VB, pero como lo que se, lo he leído en otros libros... no está bien que te lo cuente... como soy... ¿verdad? (mejor te hubieras callao Guille)Bueno, al grano. Con el Visual Basic 4 llegó un nuevo tipo de módulo: el módulo de clase, el cual tiene como extensión .cls
Además de esta nueva extensión, los proyectos de VB también estrenaron "look" y pasaron de ser .MAK a .VBP (Visual Basic Project), no es que sea una ventaja, pero al menos se les dio "personalidad" a los proyectos de VB, ya que la extensión MAK, además de ser usada por las versiones anteriores de VB, también las usaban (y usan) los compiladores de Microsoft, tanto para BASIC como para C/C++ y lo más frustrante del compilador del BASIC de MS-DOS, es que existía una utilidad llamada MAKE, (para crear los ejecutables), que también las usaba... y algunas veces era un follón...
Dejemos el cuento, que algunas veces me paso con mis "películas"...Para ir calentando motores, ya que no creerás que te voy a explicar cómo usar este nuevo tipo de módulos... bueno, no te lo voy a explicar por ahora, pero si dentro de poquitas entregas...
Vamos a ver cómo usarlo de forma "muy" genérica, para que al menos sepas que puedes crear tus propias "propiedades" y métodos... gracias a:Los módulos de clase
Aunque sin necesidad de "conocer" las clases, puedes crear tus propiedades y métodos en los formularios... aunque eso creo que lo tengo anotado para una entrega posterior... (es que ahora intento adelantar trabajo y voy preparando algo de material...)
Venga, ¡va!... vamos a insertar un módulo de clase:
Si tienes un proyecto abierto, en el menú "project" (proyecto), selecciona añadir módulo de clase.
Esto creará una clase llamada Class1.
Cámbiale el nombre y haz que se llame cNombre.
En el código escribe esto:Public Nombre As String Public AñoNacimiento As IntegerCon esto acabamos de crear dos propiedades, ahora vamos a ver cómo usarlas.
Antes vamos a crear un método que calculará la Edad:Public Function Edad() As Integer Edad = Year(Now) - AñoNacimiento End FunctionCuando queramos saber la edad que tenemos (o que tiene la clase), simplemente le restamos al año actual nuestro año de nacimiento... La función Now devuelve un valor que es la fecha actual (día y hora), por su lado Year toma sólo el año de la fecha indicada...
PST! Aquí puedes hacer trampas, por ejemplo si quieres quitarte algunos añillos:Edad = Year(Now) - AñoNacimiento -10'Cambia el 10, por lo que quieras "rejuvenecer"
Ahora en serio, vamos a ver cómo usar esta clase.
A diferencia de los Form y módulos BAS, las variables (propiedades) y procedimientos (métodos) de las clases no se pueden usar si no le hemos indicado a Visual Basic que sepa de su existencia y no me refiero a tener que DIMensionar una variable, cosa que hay que hacer siempre, sino a otra forma de "existencia"...Para poder usar un módulo de clase, tendremos que declarar una variable de una forma parecida a como lo hacemos con el resto de tipos de datos que ya hemos visto:
Dim unNombre As New cNombreCon esta declaración le decimos al VB que cree una nueva (New) variable que nos permita usar esta clase llamada cNombre.
Nota del 24/Ago/2003:
Aquí he usado esa forma de declarar e "instanciar" (crear en memoria) una clase, pero esta no es una forma recomendable y nunca, nunca, deberías usarla. En lugar de declarar y crear una clase de esa forma, usa este otro código:Dim unNombre As cNombre Set unNombre = New cNombreEn la entrega correspondiente veremos con más profundidad todo esto de las clases y la creación de los objetos en la memoria, la asignación de esos objetos mediante Set, etc... pero eso será en otro momento.
Una vez que tenemos creado el "objeto", lo usamos de la misma forma que hacíamos con los tipos definidos:
unNombre.Nombre ="Guillermo" unNombre.AñoNacimiento = 1957 'Para mostrar la edad de este cuarentón, haremos: MsgBox unNombre.Nombre & " tiene " & unNombre.Edad & " años..."Esto imprimirá: (suponiendo que estamos en 1999)
Guillermo tiene 42 años... (aunque debería decir "tendrá", pero bueno...)Ahora analiza el código y deduce cómo funciona... ya que lo vamos a dejar aquí... así parecerá una teleserie y estarás pendiente de la pantalla... je, je... esto es la "revancha" por reírte de mi edad.
Nos vemos
Guillermo
P.S.
No te preocupes por la "cortedad" de esta entrega... pronto habrás más...
P.S. 2
Si hubiese querido, me podría haber enrollado mostrándote un montón de propiedades y métodos con lo cual habría "rellenado" un montón de espacio..., pero, como te dije antes, pulsa F1 y mira lo que te dice la ayuda del Visual Basic.