domingo, 14 de octubre de 2018

Programando con VB 6.0




Mi Primera Linea de Codigo





VISUAL BASIC 6.0 

Los objetos de Visual Basic 6.0 tienen (o pueden tener) eventos, propiedades y métodos. Los eventos son las acciones que el usuario ejerce sobre un objeto; es un evento el hacer clic sobre un control, mover el ratón, etc. Las Propiedades son las cualidades que presenta un objeto; por ejemplo su nombre, su color, su tamaño, su posición, etc. Los Métodos son las operaciones que un objeto puede hacer, por ejemplo un formulario posee el método PrintForm, el cual envía un trabajo de impresión de sí mismo.

Eventos.

Según el tipo de objeto, se admitirán algunos eventos, ya que si bien hay eventos comunes a varios objetos, otros no los tienen, y algunos objetos no tienen eventos (por ejemplo los controles Line y Shape).
En la ventana de de código de un formulario hay dos cuadros combinados en la parte superior. El de la izquierda despliega todos los controles del formulario (y el propio formulario) que admiten eventos, si se selecciona uno, en el cuadro combinado de la derecha aparecerán todos los eventos que ese control soporta.
Cuando un evento tiene lugar, el usuario programa lo que ese evento desencadenará. Esto se establece de la siguiente manera:

Private Sub objeto_evento()
Sentencias
End Sub

Donde objeto es el nombre del objeto en que se genera el evento y evento es el nombre del evento que se genera. Sentencias son las instrucciones que indican qué ocurrirá al producirse este evento y End Sub finaliza este procedimiento.

Antes de continuar, hay que aclarar los nombres de los controles. Un control puede tener cualquier nombre, siempre que empiece con una letra, que no tenga caracteres comodines (como ? ; / < > # : *) y no sea una palabra reservada por el lenguaje; estas palabras reservadas aparecen en azul cuando se escribe el código (For, Private, End, If, Print, etc.). Por convención, se establece que las tres primeras letras del nombre del objeto lo describan y las restantes describan su función; por ejemplo, una caja de texto donse se escriban edades, podría llamarse txtEdad, sin embargo es una convención, no es regla.
Algunos eventos tienen argumentos. Los argumentos son datos adicionales sobre el evento, los cuales lo hacen más específico; hay eventos que no utilizan argumentos y otros que sí. Los argumentos se encierran entre paréntesis a continuación del nombre del evento.

Ejemplo 1

Crea un nuevo proyecto estándar y coloca los siguientes controles, con sus propiedades:

Control Propiedad Valor
Form Name frmProg
Commandbutton Name cmdBlanco
" " Caption Blanco
Commandbutton Name cmdAzul
" " Caption Azul
Textbox Name Text1
Escribe en la ventana de código del formulario el siguiente código:

Private Sub cmdBlanco_Click()
Text1.BackColor=vbWhite
End Sub

Private Sub cmdAzul_Click()
Text1.BackColor=vbBlue
End Sub

Ejecute el programa como ya se ha visto anteriormente (menú Ejecutar o F5).

Cuando se hace clic sobre el botón de nombre cmdBlanco, se desencadena el evento Click, el cual trae por resultado el cambio del color de fondo de la caja de texto, y lo mismo ocurre con el botón cmdAzul.
Ahora un ejemplo de un evento que lleva argumentos: el evento KeyPress. Este evento ocurre cuando se oprime una tecla del teclado sobre un control. Lleva por argumento la expresión Keyascii as Integer, el cual especifica el botón del teclado que se pulsó.
Crea un nuevo proyecto y coloca los siguientes controles:

Control Propiedad Valor
Form Name frmProg
Commandbutton Name cmdPrueba
" " Caption Convertir
Textbox Name txtPrueba
" " Text  
Escribe en la ventana de código del formulario el siguiente código:

Private Sub cmdPrueba_Click()
txtPrueba.Text=Chr(Keyascii)
End Sub

Private Sub txtPrueba_KeyPress(Keyascii as Integer)
cmdPrueba.SetFocus
End Sub

Pulse F5 para probar esta aplicación. Cada tecla del teclado tiene un carácter en código ASCII que la representa y se puede saber oprimiendo la tecla Alt y un número en el teclado numérico. Por ejemplo, el carácter @ tiene número 64, o sea que Alt+64 devolverá el carácter @.
A continuación, una lista de los eventos más usuales y su descripción.

Click: ocurre al hacer clic sobre un control (con el botón primario del mouse). No lleva argumentos.
Dblclick: ocurre al hacer doble click sobre un control (con el botón primario del mouse). No lleva argumentos.
LostFocus: ocurre cuando un control pierde el Foco (cuando deja de estar activo), no lleva argumentos
GotFocus: ocurre cuando un control recibe el Foco (comienza a estar activo), no lleva argumentos
Change: ocurre cuando algo cambia en un control. No lleva argumentos.
KeyPress: ocurre cuando se presiona una tecla del teclado sobre un control. Lleva por argumento la expresión Keyascii as Integer, un número entero que representa el código ASCII de la tecla presionada.
MouseMove: ocurre cuando se mueve el mouse sobre un control. Tiene por argumentos ByVal Button as Integer, ByVal Shift as Integer, ByVal X as Single, ByVal Y as Single. Con respecto a estos argumentos, Button indica si hay algún botón presionado, Shift indica si está presionadoa alguna de las teclas del teclado (Shift, Control y/o Alt), X indica la coordenada X del puntero e Y indica la coordenada Y del puntero.
MouseUp: ocurre al soltar un botón del mouse sobre un objeto. Tiene los mismos argumentos que el evento MouseMove.
MouseDown: ocurre al presionar un botón del mouse sobre un objeto. Tiene los mismos argumentos que el evento MouseMove y MouseUp.
DragOver: ocurre mientras se arrastra un objeto sobre otro. Vale decir que este evento no ocurre sobre el objeto arrastrado sino sobre el objeto sobre el que se arrastra. Los argumentos son X e y que son las coordenadas (como en los tres eventos anteriores) y un argumento llamado Control el cual indica el control que se arrastra.
DragDrop: ocurre cuando finaliza una operación de arrastre. Los argumentos son las coordenadas X e Y.
Hay eventos que son propios de cada control, porque solamente se producirán en ese control. Un ejemplo es el evento Timer del control Timer (un control estándar que permite que determinadas acciones se ejecuten periódicamente), el evento Resize del formulario, etc. Estos se verán cuando se vea cada control en particular.
Ya se mencionó que los eventos MouseUp, MouseDown, MouseMove tienen ciertos argumentos como Button y Shift que indican qué obtones del mouse y del teclad están presionados. Estos valores son constantes de Visual Basic 6.0 que tienen un valor numérico y una constante literal. A continuación dos tablas con los valores de estas constantes:

Tabla 1 - Constantes del argumento Button
Botón Constante Valor
Botón izquierdo presionado vbLeftButton 1
Botón derecho presionado vbRightButton 2
Botón central presionado vbMiddleButton 4
Botón izq + der 3


Tabla 2 - Constantes del argumento Shift
Botón Constante Valor
Tecla Shift vbShiftMask 1
Tecla Control vbCtrlMask 2
Tecla Alt vbAltMask 4
Tecla Shift + Ctrol 3
Propiedades.

Las propiedades de los objetos varían según el objeto. Hay propiedades comunes a varios objetos y otras únicas, propias del objeto, debido a su función.
Las propiedades se pueden definir en tiempo de diseño y en tiempo de ejecución. Las propiedades se definen en tiempo de diseño mediante el cuadro Propiedades y en tiempo de ejecución mediante las sentencias en el código. Las propiedades definidas en tiempo de diseño son las propiedades por defecto de los objetos y éstas se presentarán al cargarse el formulario (a menos que se cambien con el evento Load del formulario).
Las propiedades pueden ser de sólo lectura, de sólo escritura o ambas. Las propiedades de sólo lectura se pueden consultar pero no cambiar directamente, si se intenta cambiar el valor de una propiedad de lectura se producirá un error en tiempo de ejecución. Las propiedades de sólo escritura no se pueden ver, solamente cambiar y son poco frecuentes. Las propiedades de lectura y escritura son consultables y editables por el usuario.
Una propiedad se define en tiempo de ejecución de la siguiente manera:

objeto.Propiedad=Valor

Para obtener el valor de una propiedad en tiempo de ejecución se utiliza la siguiente sentencia:

destino=objeto.Propiedad

Destino es el lugar donde se mostrará el valor de la propiedad (en una variable, en una caja de texto, etc).
En el primer ejemplo, al ejecutarse los eventos Click de los botones de comando, lo que ocurría era un cambio en la propiedad BackColor de la caja d texto. En el ejemplo del evento KeyPress del botón de comando, lo que desencadena es un cambio en la propiedad Text de la caja de texto.
Las propiedades más usuales de los controles son las siguientes:

Name: es el nombre interno del objeto. Con él se hace referencia a dicho objeto en el código.
Caption: es el texto que figurará en el control, un título; no es el nombre del control sino solamente una etiqueta.
BackColor: es el color de fondo del control
Align: especifica la alineación del texto en un control que lleve texto (como las cajas de texto o las etiquetas). Puede ser izquierda, derecha o centrada.
Left: indica la distancia entre el borde izquierdo del objeto y el borde superior del objeto que lo contiene.
Top: indica la distancia entre el borde superior del objeto y el borde superior del objeto que lo contiene.
Height: es la altura del objeto
Width: es el ancho del objeto
Forecolor: es el color de la letra del objeto
ToolTipText: es un texto que aparece al situar el cursor sobre un objeto
Visible: indica si un objeto es visible (True) o invisible (False).
Enabled: indica si el objeto puede recibir el foco (True) o no (False).
TabStop: establece si un objeto puede recibir el foco mediante la tecla Tab (True) o no (False).
TabIndex: un número que será progresivo y único para cada control, el cual indica el orden en que irán recibiendo el foco con la tecla Tab.
Value: indica el valor de un control, y será variado el valor a asignarle según el tipo de objeto.
Font: esta es una propiedad general que da acceso a otras subpropiedades, todas relacionadas con la fuente. Se accede a estas digitando un punto inmediatamente después de la palabra Font. Estas propiedades son:
Bold: es la letra en negrita (True).
Italic: es la letra en cursiva (True).
Underline: es la letra subrayada (True).
Strike: es la letra tachada (True).
Size: es el tamaño de la fuente.
Name: es el tipo de la fuente
Text: es una propiedad de las cajas de texto, la cual es el texto que mostrará en su interior.
Ejemplo 2

Crea un nuevo proyecto estándar y coloca los siguientes controles, con sus propiedades:

Control Propiedad Valor
Form Name frmProp
Frame Name fraCont
" " Caption Color de fondo
Shape Name shpForma
" " Shape Oval
HScroll Name hsbMover
" " Min 0
" " Value 0
Option Name optAmarillo
" " Caption Amarillo
Option Name optRojo
" " Caption Rojo
Option Name optVerde
" " Caption Verde
Ahora escribe el siguiente código en la ventana de código:

Private Sub Form_Load()
hsbMover.Max=me.ScaleWidth-shpForma.Width
shpForma.Left=0
End Sub

Private Sub hsbMover_Change()
shpForma.Left=hsbMover.Value
End Sub

Private Sub optAmarillo_Click()
me.BackColor=vbYellow
End Sub

Private Sub optRojo_Click()
me.BackColor=vbRed
End Sub

Private Sub optVerde_Click()
me.BackColor=vbGreen
End Sub

Presione F5 para probar la aplicación y ver cómo van cambiando las propiedades de los objetos.
El evento Form_Load es un evento que ocurre mientras se carga el formulario y se lo puede utilizar para dar valor a las variables y propiedades. La instrucción me hace referencia al formulario en el cual se está escribiendo el código. La propiedad ScaleWidth del formulario hace referencia al ancho del formulario. En el caso de la propiedad BackColor se han utilizado las constantes de color de Visual Basic 6.0.

Métodos.

Los métodos son aquellas que los objetos pueden realizar. Algunos métodos llevan argumentos y otros no y son, por lo general, específicos de un tipo de control.
Un método que ya se ha utilizado es el método SetFocus, el cual mueve el foco al objeto que lo ha llamado. Este es uno de los métodos que no lleva argumentos.
A modo de ejemplo, se verán los métodos Additem y Clear, métodos de los cuadros de lista y cuadros combinados. El primer método ingresa valores en el control y el segundo los elimina todos, el primer método lleva argumentos mientras que el segundo no.

Ejemplo 3

Crea un nuevo proyecto estándar y coloca los siguientes controles:

Control Propiedad Valor
Form Name frmMetod
Commandbutton Name cmdLimpiar
Textbox Name txtTexto
ListBox Name lstLista
Escribe el siguiente código en la ventana de código del formulario:

Private Sub cmdLimpiar_Click()
lstLista.Clear
End Sub

Private Sub txtTexto_KeyPress(Keyascii as Integer)
If Keyascii=13 Then
lstLista.Additem txtTexto.Text
txtTexto.Text=""
End If
End Sub

La sentencia If... Then... End If es una sentencia de control la cual, en este caso, sirve para que se ejecute el método Additem cuando se presione la tecla Enter (Keyascii=13), esta sentencia se verá más adelante.
Pulsar F5 para probar el programa.
Otro método de ejemplo puede ser el método PrintForm del formulario, el cual imprime el formulario con sus controles, todo excepto la barra de título.
Para verlo funcionarr, agregue al ejemplo anterior un nuevo botón de comando y su propiedad Name: cmdPrint; su Caption: Imprimir.
Añadir el siguiente código:

Private Sub cmdPrint_Click()
me.PrintForm
End Sub

Pulse F5 para probar