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 Integer
Con 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 Function
Cuando 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 cNombre
Con 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 cNombre
En 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.