Está en la página 1de 51

CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

VARIABLES

Una variable es una ubicación de la memoria, cuyo valor puede variar a lo largo del funcionamiento de
un programa. Una variable puede contener cualquier valor de tipo de datos y también puede cambiar el
valor de una variable en cualquier momento.

 ASIGNAR NOMBRES A LAS VARIABLES

Para definir los nombre de las variables se deberá respetar ciertas reglas:

1. Debe iniciar con un carácter alfabético.


2. Puede contener números.
3. No se permiten espacios en blanco.
4. No debe ser una palabra especial reconocida por Visual FoxPro (Estore, Command,
Value, etc).
5. No debe ser mayor a 256 caracteres (no es recomendable que sean muy grandes).
6. No se permiten caracteres especiales excepto el guión bajo (_).

Ejemplo de variables validas:

VARIABLE = “HOLA”
PARCIAL1 = 10
RFC_EMPLEADO = “RLL121512”

Ejemplo de variables no validas:

VARIABLE@ = “HOLA” (No acepta el carácter especial @).


PARCIAL 1 = 10 (No acepta el espacio en blanco antes del 1).
122A = “B” (No deben iniciar con un valor numérico).

 TIPOS DE VARIABLES

El tipo de la variable dependerá del tipo de datos que almacene, por ejemplo, si almacena números
será de tipo numérica, si almacena caracteres alfabéticos será de tipo carácter, etc.

Ejemplo:

Ejemplo Variable Valor que Almacena Tipo


PROMEDIO = 8.5 PROMEDIO Números NUMERICO
DOMICILIO = “CALLE DEL ALAMO # 234” DOMICILIO Cadena de caracteres CARACTER
ASEGURADO = .T. ASEGURADO Lógico LÓGICO
INGRESO = DATE() INGRESO Fecha FECHA

 ALCANCE DE LAS VARIABLES

Las variables sólo existen cuando se está ejecutando una aplicación o en la sesión de Visual FoxPro
en la que se han creado. Para especificar el alcance de una variable, use las palabras clave LOCAL,
PRIVATE y PUBLIC.

LOCAL: Las variables de memoria tipo local sólo se pueden emplear y modificar en el procedimiento o
la función donde se crean, y no pueden tener acceso a ellas los programas de nivel inferior o superior.
Las matrices y las variables de memoria locales se liberan cuando termina de ejecutarse el
procedimiento o la función que las contiene.

CORPORATIVO CETEC - SICASA 115


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

Las variables Local se declaran de la siguiente forma:

LOCAL INGRESOS, RECIBO, BANDERA


INGRESOS = 12.25
RECIBO = .T.

PRIVATE: Private no crea variables; simplemente oculta al programa actual las variables declaradas
en programas de nivel superior.

Las variables Private se declaran de la siguiente forma:

PRIVATE INGRESOS, RECIBO, BANDERA


INGRESOS = 12.25
RECIBO = .T.

PUBLIC: Las variables Publicas son variables globales que pueden utilizarse y modificarse en
cualquier programa que ejecute durante la sesión actual de Visual FoxPro.

Las variables Public se declaran de la siguiente forma:

PUBLIC INGRESOS, RECIBO, BANDERA


INGRESOS = 12.25
RECIBO = .T.
BANDERA = 1

 PRÁCTICA

1. Entre a Visual FoxPro, cree un nuevo formulario y realice lo siguiente.

2) Agregue
1) Agregue un cuadro
una etiqueta y de texto
cambie su
propiedad
Caption como
se muestra en
la ventana
3) Agregue un
botón de
comando y
cambie su
propiedad
Caption por
DESPLEGAR

Hasta este momento hemos insertado tres controles: Etiqueta, Cuadro de texto y Botón de comando.

La idea es que al dar clic en el botón de comando se despliegue un mensaje en el cuadro de texto.

CORPORATIVO CETEC - SICASA 116


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

4) De doble clic
sobre el botón de
comando para
abrir la ventana de
código

Asegúrese que
este en el objeto
Asegúrese que
Command1
este en el
evento CLICK

5) Escriba la siguiente línea de código:

THISFORM.TEXT1.VALUE = MENSAJE

6) Grabe su
formulario con el
nombre de
VARIABLES

CORPORATIVO CETEC - SICASA 117


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

7) Ejecute el
formulario y de un clic
en el botón desplegar

8) Observe el
mensaje que se
despliega indicando
que no existe la
variable MENSAJE,
de un clic en el
botón Cancelar

9) De un clic en el
botón cerrar o en
el botón diseño
para regresar al
diseño del
formulario

A continuación
validaremos la
variable
MENSAJE para
que sea
reconocida por
Visual FoxPro 10) Escriba antes de la primer línea de
código la siguiente línea:
MENSAJE=”VISUAL FOXPRO”

CORPORATIVO CETEC - SICASA 118


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

11) Ejecute el
formulario y de un clic
en el botón desplegar
y observe que ahora si
se muestra el mensaje
en el cuadro de texto

12) Regrese al
modo diseño y
agregue otro botón
de comando y 13) De doble clic
cambie la propiedad sobre el botón recién
Caption por VALOR insertado para abrir la
INICIAL ventana de código

Verifique que se
Verifique que se encuentre en el
encuentre en el procedimiento de
objeto Command2 evento CLICK

14) Escriba la siguiente línea de código:


THISFORM.TEXT1.VALUE = MENSAJE

CORPORATIVO CETEC - SICASA 119


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

15) Grabe los


cambios y ejecute el
formulario. De un
clic en el botón
DESPLEGAR

16) Ahora de un clic


en el botón VALOR
INICIAL

Observe que se
presenta el mismo
mensaje de error
que se mostró
anteriormente(de
un clic en
Cancelar)

Analice lo siguiente; cuando se dio clic sobre el botón DESPLEGAR se mostró el contenido de la
variable MENSAJE en el cuadro de texto; pero cuando se dio clic sobre el botón de comando VALOR
PRINCIPAL, marco un error indicando que la variable MENSAJE no existe.

Observe el código de los dos botones:

CORPORATIVO CETEC - SICASA 120


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

COMMAND1 (DESPLEGAR):
MENSAJE = "VISUAL FOXPRO"
THISFORM.TEXT1.VALUE = MENSAJE

COMMAND2 (VALOR INICIAL):


THISFORM.TEXT1.VALUE = MENSAJE

En el código del botón de comando COMMAND1 se especificaron dos líneas de código, en la primer
línea se asigno la cadena “VISUAL FOXPRO” en la variable MENSAJE, mientras que en la segunda
línea se asigno el valor de la variable MENSAJE a la propiedad VALUE del cuadro de texto TEXT1.

En el segundo botón sólo se asigno la variable MENSAJE a la propiedad VALUE del cuadro de texto
TEXT1.

Si la variable MENSAJE ya fue validada dentro del botón COMMAND1 entonces porque no despliega
su valor cuando se da clic sobre el segundo botón COMMAND2.

Esto se debe a que esta variable sólo tendrá vida o conserva su valor dentro del botón de comando
COMMAND1 y cuando se intenta llamar o utilizar dentro de otro procedimiento de evento o control
pierde su valor y ya no es más reconocida por Visual FoxPro.

Para que esta variable sea utilizada no sólo por el control COMMAND1 sino por todos los controles
que uno desee tendría que ser validad como variable Publica (tipo PUBLIC).

2. En seguida validaremos la variable MENSAJE tipo publica para poder utilizarla en el botón
de comando COMMAND2.

1) Estando en vista diseño


de doble clic sobre un
área en blanco del
formulario cuidando de no
dar doble clic sobre un
control

CORPORATIVO CETEC - SICASA 121


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

Verifique que se
encuentre dentro del
objeto FORM1

2) Busque el
procedimiento de
Evento INIT y
selecciónelo

4) Grabe los
cambios del
formulario

3) Escriba la siguiente
línea de código:
PUBLIC MENSAJE

De esta manera valido la variable MENSAJE como tipo publica en el evento INIT del formulario
(FORM1) ya que cuando este se ejecuta es el primer evento que será reconocido por Visual FoxPro,
de tal forma que cuando entre a otro control o se mande llamar (el que sea) la variable ya habrá sido
reconocida como publica por el programa.

5) Ejecute el
formulario y de un
clic en el botón
desplegar

CORPORATIVO CETEC - SICASA 122


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

7) Cierre el
formulario para
regresar al
modo diseño
6) De un clic en el botón
VALOR INICIAL y
observe que el mensaje
de error no se muestra

Verifique que
se encuentre
en FORM1

8) Para apreciar mejor el mensaje 9) Grabe Los


escriba la siguiente línea de código en cambios y ejecute el
el evento INIT del formulario FORM1: formulario
MENSAJE = “VALOR INICIAL”

10) Al ejecutar el
formulario de un clic en
el botón VALOR INICIAL

Observe el
mensaje

CORPORATIVO CETEC - SICASA 123


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

11) De un clic en el
botón DESPLEGAR
para ver el segundo
mensaje

12) De un clic en el botón VALOR INICIAL y


observe que el mensaje no cambia

El valor inicial de la variable MENSAJE dentro del evento INIT es de “VALOR INICIAL”, pero su valor
cambia dentro del botón de comando COMMAND2 (Desplegar) por el mensaje: “VISUAL FOXPRO”,
por lo tanto pierde el valor inicial.
Es por eso que al dar clic por segunda vez en el botón de comando COMMAND2 (VALOR INICIAL)
continua el mensaje de “VISUAL FOXPRO”.

Para poder conservar el valor inicial de la variable MENSAJE y que este no se pierda tenemos que
validarla como variable Local en cualquier otro control o procedimiento donde vayamos a utilizarla.

3. A continuación declararemos la variable MENSAJE como tipo Local en el procedimiento


de evento CLICK del botón de comando COMMAND1.

1) Seleccione de la lista de
objetos el control
COMMAND1

Si esta en modo diseño sólo


de doble clic sobre el botón de
comando DESPLEGAR

CORPORATIVO CETEC - SICASA 124


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

Verifique que se Verifique que


encuentre en se encuentre
COMMAND1 en el evento
CLICK

2) Escriba la siguiente línea de


código al principio de las 3) Grabe los cambios
demás líneas: y ejecute el formulario
LOCAL MENSAJE

4) De un clic en el
botón DESPLEGAR
y observe el
mensaje en el
cuadro de texto

5) De un clic en el botón
VALOR INICIAL y
6) Vuelva a dar
observe el mensaje en
clic en el primer el cuadro de texto
botón y después
en el segundo
botón para ver los
mensajes

Como habrá observado ahora los dos botones despliegan un mensaje diferente, y el valor inicial de la
variable MENSAJE que se especificó en el evento INIT no se pierde. Esto es porque dentro del código
del botón COMMAND1 (Desplegar) se declaro la variable como tipo LOCAL y su valor sólo se
conserva en ese procedimiento y al momento de pasarnos a otro procedimiento o Control regresa o se
conserva el valor original de la variable MENSAJE.

CORPORATIVO CETEC - SICASA 125


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

COMANDOS Y FUNCIONES

Muchas veces necesitará utilizar comandos o funciones para realizar alguna tarea en particular dentro
del programa; los comando y funciones de Visual FoxPro se deben escribir en la ventana de código
dentro de algún procedimiento de evento seleccionado.

 COMANDO IF...ENDIF

Ejecuta condicionalmente un conjunto de comandos dependiendo del resultado de una expresión


lógica.

Sintaxis:

IF lExpresión [THEN]
Comandos
[ELSE
Comandos]
ENDIF

Ejemplo:
LOCAL EDAD
EDAD = 20

IF EDAD >= 18 THEN


THISFORM.TEXT1.VALUE = “MAYOR DE EDAD”
ELSE
THISFORM.TEXT1.VALUE = “MENOR DE EDAD”
ENDIF

Observe en el ejemplo anterior se declaro la variable EDAD como tipo LOCAL, y se le dio el valor de
20; posteriormente se condiciono la variable EDAD si era mayor o igual que 18, si se cumple la
condición se asigna la cadena de texto “MAYOR DE EDAD” al cuadro de texto TEXT1, si no se cumple
se asigna al cuadro de texto TEXT1 el texto “MENOR DE EDAD”.

 DO CASE...ENDCASE

Ejecuta el primer conjunto de comandos cuya expresión condicional dé como resultado verdadero (.T.).

Sintaxis:

DO CASE
CASE lExpresión1
Comandos
[CASE lExpresión2
Comandos
...
CASE lExpresiónN
Comandos]
[OTHERWISE
Comandos]
ENDCASE

CORPORATIVO CETEC - SICASA 126


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

Ejemplo:

PUBLIC PROMEDIO
PROMEDIO = (PARCIAL1 + PARCIAL2 + PARCIAL3) / 3

DO CASE
CASE PROMEDIO = 10
THISFORM.TEXT1.VALUE = "EXCELENTE"
CASE PROMEDIO = 9
THISFORM.TEXT1.VALUE = "MUY BIEN"
CASE PROMEDIO = 8
THISFORM.TEXT1.VALUE = "BIEN"
CASE PROMEDIO = 7
THISFORM.TEXT1.VALUE = "REGULAR"
OTHERWISE
THISFORM.TEXT1.VALUE = "REPROBADO"
ENDCASE

Observe que en la segunda línea de código se cálculo el promedio y posteriormente se inicio la


condición múltiple con el comando DO CASE, la siguiente línea condiciona si la variable PROMEDIO
es igual a 10 se asigna al cuadro de texto TEXT1 la cadena “EXCELENTE”, si es 9 se asigna “MUY
BIEN”, si es 8 “BIEN”, si es 7 “REGULAR” y si no es ninguno de los valores anteriores (10, 9 , 8 y 7)
se asigna “REPROBADO”.

 DO WHILE ...ENDDO

Ejecuta un conjunto de comandos dentro de un bucle condicional.

Sintaxis:

DO WHILE lExpresión
Comandos
[LOOP]
[EXIT]
ENDDO

Ejemplo:

x= 0
El ciclo se repite mientras la
do while x < 10 variable X sea menor que 10
x = x +1
thisform.text1.value = x
enddo

El comando DO WHILE, se utiliza cuando queremos repetir una serie de instrucciones; el ciclo
permanecerá mientras una condición se cumpla; al momento de no cumplirse la condición se detiene
el ciclo. Cuando se encuentra con la opción LOOP vuelve a repetir una vez más el ciclo; la opción
EXIT termina por completo el ciclo.

CORPORATIVO CETEC - SICASA 127


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

 EOF()

Determina si el puntero de registro está situado o no más allá del último registro de la tabla actual o
especificada.

Sintaxis:

EOF([nÁreaTrabajo | cAliasTabla])

Ejemplo:

IF EOF() THEN
THISFORM.TEXT1.VALUE = “NOS ENCONTRAMOS AL FINAL LA TABLA””
ENDIF

 BOF()

Determina si el puntero de registro está situado al principio de una tabla.

Sintaxis:

BOF([nÁreaTrabajo | cAliasTabla])

Ejemplo:

IF BOF() THEN
THISFORM.TEXT1.VALUE = “NOS ENCONTRAMOS AL INICIO DE LA TABLA””
ENDIF

 SKIP

Mueve el puntero de registro hacia adelante o hacia atrás en una tabla.

Sintaxis:

SKIP
[nRegistros]
[IN nÁreaTrabajo | cAliasTabla]

Ejemplo:
Avanza el puntero de registros al
siguiente registro
SKIP +1

Mueve el puntero de registros al


SKIP -1 registro anterior

Avanza el puntero de registros tres


SKIP +3 registros a partir de su posición original

CORPORATIVO CETEC - SICASA 128


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

 APPEND

Agrega uno o más registros nuevos al final de una tabla.

Sintaxis:

APPEND [BLANK]
[IN nÁreaTrabajo | cAliasTabla]
[NOMENU]

Ejemplo:

APPEND BLANK

 FOUND

Devuelve verdadero si un registro de la tabla es localizado.

Sintaxis:

FOUND([nÁreaTrabajo | cAliasTabla])

 SEEK

Busca en una tabla la primera aparición de un registro cuya expresión clave de índice coincida con una
expresión general, y después mueve el puntero de registro al registro coincidente.

Ejemplo:

SEEK CREDENCIAL

IF FOUND( )
DISPLAY FIELDS NOMBRE,DOMICILIO
ENDIF

En el transcurso del manual se seguirán viendo más comandos y funciones según se vayan
requiriendo.

PROCEDIMIENTOS DE EVENTO GOTFOCUS, LOSTFOCUS Y SETFOCUS

El enfoque de un control es cuando este tiene la capacidad de recibir información por medio del
teclado o acepta cualquier entrada del teclado; en otras palabras, es el que se encuentra activo en ese
preciso momento.

GOTFOCUS: Este evento ocurre cuando el control recibe el enfoque.

LOSTFOCUS: Este evento ocurre cuando el control pierde el enfoque.

SETFOCUS: Permite establecer el control de un objeto

CORPORATIVO CETEC - SICASA 129


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

 PRÁCTICA

1. Cree un nuevo formulario y agregue los siguientes controles como lo muestra la figura.

1) Agregue un 2) Agregue una


cuadro de etiqueta
texto

3) Agregue
tres botones
de comando

4) Seleccione la
etiqueta y cambie
la propiedad
BORDERSTYLE
a: 1- Sencillo Fijo Cambie la
propiedad
BorderStyle a
Sencillo fijo

6) Busque la
propiedad NAME
5) Seleccione el del botón
primer botón y seleccionado y
cambie la cámbiela a
propiedad Caption PRINCIPAL
a PRINCIPAL

Verifique que las propiedades CAPTION y NAME del primer botón tengan el valor de PRINCIPAL.

CORPORATIVO CETEC - SICASA 130


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

8) Busque su
propiedad NAME
del segundo botón
de comando y
escriba el nombre
7) Seleccione el de: ESCRIBIR
segundo botón de
comando y cambie
su propiedad
Caption a:
ESCRIBIR TEXTO

10) Busque su
propiedad NAME
9) Seleccione el
del tercer botón y
tercer botón y escriba:
escriba en su
LLAMARBOTON
propiedad Caption:
IR A BOTÓN
PRINCIPAL

Es importante que al asignar los nombres a los botones de comando o a cualquier control, no se dejen
espacios en blanco.

2. A continuación agregaremos código en los eventos GOTFOCUS y LOSTFOCUS.

1) De doble clic
sobre el botón
principal

CORPORATIVO CETEC - SICASA 131


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

Verifique que se
encuentre en el botón
de comando
PRINCIPAL
2) Busque el
procedimiento de
evento GOTFOCUS y
selecciónelo

3) Escriba la siguiente línea de código:

THISFORM.LABEL1.CAPTION = “EL BOTÓN PRINCIPAL TIENE EL FOCO EN ESTE MOMENTO”

4) Busque el
procedimiento de
evento LOSTFOCUS y
selecciónelo

CORPORATIVO CETEC - SICASA 132


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

5) En el evento LOSTFOCUS del control PRINCIPAL escriba la siguiente línea:

THISFORM.LABEL1.CAPTION = "EL BOTON PRINCIPAL A PERDIDO EL FOCO"

6) Abra la lista de
objetos y seleccione
el control ESCRIBIR

7) Seleccione el
procedimiento de
evento CLICK

CORPORATIVO CETEC - SICASA 133


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

Verifique que se Verifique que se


encuentre en el encuentre en el
control ESCRIBIR evento CLICK

8) Escriba las siguientes líneas de código:

THISFORM.LABEL1.CAPTION = "SE ENCUENTRA EN EL CUADRO DE TEXTO"


THISFORM.TEXT1.SETFOCUS

9) Abra la lista de
objetos y seleccione
el control
LLAMARBOTON

Verifique que se Verifique que se


encuentre en el encuentre en el evento
control CLICK
LLAMARBOTON

10) Escriba la orden para ir al control botón 11) Cierre la


PRINCIPAL: ventana de código
THISFORM.PRINCIPAL.SETFOCUS para ir al modo
diseño

CORPORATIVO CETEC - SICASA 134


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

14) Grabe su
formulario y
ejecútelo (grábelo
con el nombre de
GOTFOCUS)
12) Seleccione
la etiqueta
13) Cambie la
propiedad
AUTOSIZE a
verdadero:
.T. Verdadero

15) De un clic en el botón Observe el mensaje


Principal

Observe que al momento de dar clic en el botón PRINCIPAL, se ejecuta el evento GOTFOCUS que
fue donde se mando el mensaje:

THISFORM.LABEL1.CAPTION = “EL BOTON PRINCIPAL TIENE EL FOCO EN ESTE MOMENTO”

Observe el nuevo
mensaje; este mensaje se
16) De un clic en el
especifico en el evento
cuadro de texto LOSTFOCUS el cual se
cumple cuando el control
pierde el foco o ya no se
encuentra activado; ya
que ahora nos
encontramos en el cuadro
de texto por lo tanto el
botón PRINCIPAL perdió
el foco

CORPORATIVO CETEC - SICASA 135


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

Observe el mensaje
indicando que el
17) De un clic en el botón principal tiene
botón el foco o esta
LLAMARBOTON y activado
observe que no se
queda activado, si no
que manda el foco o
activa el botón
PRINCIPAL

En el evento CLICK del botón LLAMARBOTON, se escribió la orden:

THISFORM.PRINCIPAL.SETFOCUS

Esta instrucción tiene como función ir o mandar el foco hacia otro control del formulario por medio del
método SETFOCUS.

Observe el
nuevo mensaje

18) De un clic
en el botón
Escribir texto y
observe que el
foco se envía al
cuadro de texto

A manera de conclusión podemos decir que el evento GOTFOCUS se ejecuta cuando el control recibe
el foco; el evento LOSTFOCUS se ejecuta cuando el control pierde el foco y el método SETFOCUS se
utiliza para mandar el foco a otro control.

Recuerde que al ejecutarse el evento se ejecuta también el código que este contiene.

CORPORATIVO CETEC - SICASA 136


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

CLASES

Clase: Es una plantilla que define las características de un objeto y describe qué apariencia y
comportamiento debe tener el objeto.

 BOTONES DE DESPLAZAMIENTO DE REGISTROS

Las clases contenedoras son las Clases de base de Visual FoxPro que agrupan otras clases
similares. Por ejemplo, una clase de formulario consta de un grupo de varias clases de controles, que
se pueden tratar como una unidad.

Los contenedores pueden incluir otros objetos y permiten el acceso a los objetos que contienen. Por
ejemplo, si crea una clase de contenedor que consta de dos cuadros de lista y dos botones de
comando y, a continuación, agrega a un formulario un objeto basado en esta clase, cada objeto
individual podrá manipularse en tiempo de ejecución y en tiempo de diseño.

Puede crear una clase de control para funcionalidad genérica; por ejemplo, los botones de comando
que permiten al usuario mover el puntero de registro en una tabla, un botón para cerrar un formulario y
un botón de ayuda pueden guardarse como clases y agregarse a formularios en cualquier momento
que desee que los formularios tengan esta funcionalidad.

 PRÁCTICA

1. Entre a Visual FoxPro y abra su base de datos EJEMPLO (que fue creada en el capítulo
2).

1) Abra su base
de datos
EJEMPLO

Si por alguna
razón no la tiene
proceda a crearla

CORPORATIVO CETEC - SICASA 137


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

2) De doble clic
sobre la tabla
ALUMNOS para
abrir la ventana
Examinar

Recuerde que
3) Verifique que tenga puede ordenar los
cuatro registros con registros de la tabla
las credenciales del 1 por medio de su
al 4 índice
seleccionando
Propiedades del
menú Tabla
Si tiene algún
número de
credencial
diferente o algún
otro dato proceda
a modificarlo

Si por alguna razón


no tiene los cuatro
registros o ninguno
agréguelos
seleccionando
Modo Anexar del
menú Ver

CORPORATIVO CETEC - SICASA 138


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

4) Una vez
que tiene los
5) De un clic en el
registros
correspondien botón Nuevo archivo
tes (lo cual es para crear un nuevo
formulario
necesario
para esta
práctica) de
un clic en el
botón Nuevo y
cree un nuevo
formulario

6) De un clic con
el botón derecho
en alguna parte
del formulario y
del menú
contextual
seleccione la
opción Entorno
de datos

8) De un clic en
7) Verifique que el botón Agregar
se encuentre para anexar la
seleccionada la tabla a la
tabla ALUMNOS ventana entorno
de datos

9) Cierre la
ventana Agregar
tabla

CORPORATIVO CETEC - SICASA 139


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

Observe que
la tabla
ALUMNOS se
agrego en la
ventana
Entorno de
datos

Si por alguna razón


desea volver a mostrar
la ventana Agregar
tabla sólo de un clic
con el botón derecho
del mouse sobre la
ventana Entorno de
datos y seleccione la
opción Agregar

Arrastre los
campos de la
tabla hacia el
formulario en
esta posición
10) De un clic
en la línea
campos y
arrástrela con
el mouse
hacia el
formulario

CORPORATIVO CETEC - SICASA 140


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

11) Una vez que se


agregaron los
Tambien puede campos al formulario
arrastrar campo cierre la ventana de
por campo si lo Entorno de datos
desea

Observe que
todos los
campos están
seleccionados
esto le da la
posibilidad de
moverlos o
arrastrarlos con
el mouse
adonde usted
desee

Observe que el
12) Agregue cinco tamaño de los botones
botones de no es el mismo ni
comando en la parte tampoco el espacio
inferior del que hay entre cada
formulario botón

CORPORATIVO CETEC - SICASA 141


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

A continuación
vamos a igualar el
tamaño de los
botones y el
espacio que hay
entre ellos

13) Pulse la
tecla SHIFT y
manténgala
presionada,
después de un
clic en cada
botón para
seleccionarlos

14) Abra el menú


Formato,
seleccione la
opción Tamaño y
elija la opción que
se adapte a su
preferencia (en
este ejemplo se
selecciono:
Ajustar al más
estrecho)

15) Vuelva abrir el


menú formato y
seleccione la
opción Espacio
horizontal y
seleccione la
opción Hacer igual

CORPORATIVO CETEC - SICASA 142


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

16) Por último


arrastre los
botones a la
posición del
formulario donde
desee que
finalmente queden

17) De un clic en
alguna parte en
blanco del formulario
para quitar la
selección de los 18) Cambie la
botones propiedad Caption
de los 4 botones tal
y como lo muestra la
figura
19) Cambie la
propiedad NAME del
primer botón por: Cambie la propiedad NAME
cmdINICIO para el botón SIGUIENTE La propiedad NAME para los dos últimos
por: cmdSIGUIENTE botones será: cmdANTERIOR y cmdULTIMO

A continuación
agregaremos el
código necesario
para desplazarse
sobre los registros

20) De doble clic


sobre el botón inicio
para abrir la ventana
de código

CORPORATIVO CETEC - SICASA 143


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

21) Escriba la orden: GO TOP


para mandar el puntero al principio
de la tabla

22) Abra la lista de


objetos y seleccione el
control cmdSIGUIENTE

23) Escriba la orden: SKIP +1 para ir


al siguiente registro

CORPORATIVO CETEC - SICASA 144


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

24) Abra la lista de


objetos y
seleccione el
control
cmdANTERIOR

25) Escriba la orden: SKIP –1 para


retroceder un registro

26) Abra la lista de


objetos y
seleccione el
control
cmdULTIMO

27) Escribe la orden: GO BOTTOM para


mandar el apuntador al último registro

28) Grabe su
formulario con el
nombre de
CONSULTA y
ejecútelo

CORPORATIVO CETEC - SICASA 145


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

Observe que nos


encontramos en el
primer registro

30) Notara que no se muestra


el contenido del siguiente
29) De un clic en el botón alumno; cierre su formulario y
siguiente (sólo una vez) regrese al modo diseño

No se despliega el contenido del segundo registro ya que se debe actualizar el contenido de los datos
del formulario utilizando la orden: THISFORM.REFRESH.

31) Seleccione
de la lista de
objetos el
control
cmdSIGUIENTE

32) Agregue la siguiente línea:


THISFORM.REFRESH

33) Grabe los


cambios, ejecute el
formulario y de un clic
en el botón siguiente

CORPORATIVO CETEC - SICASA 146


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

Observe que ahora si se


muestra el registro 2
Recuerde que sólo
tenemos 4 registros
y si continua dando
clic en el botón
Siguiente después
del cuarto registro 34) Cierre el formulario y
Visual FoxPro regrese al modo diseño
mandara un
mensaje de error

35) Abra la lista de objetos


y seleccione el control
cmdINICIO

36) Agregue la misma orden:


THISFORM.REFRESH

CORPORATIVO CETEC - SICASA 147


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

37) Agregue la misma 38) Agregue la misma


orden al control orden al control
cmdANTERIOR cmdULTIMO

39) Grabe los


cambios, ejecute su
formulario y de un
clic en el botón
Observe que se ULTIMO
muestra el último
registro de la tabla

Observe que no
se muestra ningun
registro ya que al
dar clic en el 40) De un clic en el
botón SIGUIENTE botón SIGUIENTE
avanzo al final de
la tabla

BOF (Begín Of File)


1 Si se viera internamente la
2 tabla nos encontraríamos en
3 esta posición (EOF: fin del
archivo)
4
EOF(End Of File)

CORPORATIVO CETEC - SICASA 148


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

41) Vuelva a dar


un clic en el botón
SIGUIENTE y
observe el
mensaje de error
que despliega 42) De un clic en el botón
Visual FoxPro Cancelar para cerrar el
indicando que se mensaje de error
ha encontrado el
fin del archivo

43) De varios clic en el 44) De un clic en el botón


botón ANTERIOR hasta Cancelar y cierre el
visualizar el mensaje de formulario para regresar al
error de Visual FoxPro modo diseño del
que indica que se formulario
detecto el Principio del
archivo

BOF (Begin Of File)


1
2 Observe que en estos
3 momentos nos encontramos en
4 esta posición dentro de la tabla
EOF(End Of File)

Se puede programar para que al momento de que se detecte el principio o fin del archivo en la tabla,
mande un mensaje diferente o incluso anular el mensaje; para esto realice lo siguiente.

2. Regrese al modo diseño del formulario y abra la ventana de código.

1) Seleccione el
control
cmdSIGUIENTE 2) Abra una línea en blanco
entre las dos líneas de código

CORPORATIVO CETEC - SICASA 149


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

3) Agregue las siguientes cuatro líneas de código:


IF EOF() THEN
MESSAGEBOX("SE DETECTO EL FIN DE LA TABLA...")
SKIP -1
ENDIF

4) Grabe los cambios,


ejecute el formulario y de
un clic en el botón
ULTIMO para avanzar al
último registro
5) De un clic en el botón
SIGUIENTE

Observe el
mensaje que se
5) De un clic en
despliega al
detectar el fin del el botón Aceptar
archivo

CORPORATIVO CETEC - SICASA 150


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

Analicemos la orden:

IF EOF() THEN
MESSAGEBOX("SE DETECTO EL FIN DE LA TABLA...")
SKIP -1
ENDIF

Recuerde que el comando IF se utiliza para realizar una condición; la función EOF() se utiliza para
saber si nos encontramos al final de un archivo de tipo Tabla; MSSAGEBOX se utiliza para mandar un
mensaje en una ventana; SKIP se utiliza para avanzar o retroceder a un registro dentro de la tabla.

Las cuatro líneas de código las interpreta Visual FoxPro de la siguiente manera: Si (IF) se ha
detectado el fin del archivo (EOF) entonces (THEN) despliega el mensaje (MESSAGEBOX) “SE
DETECTO EL FIN DEL ARCHIVO” y regresa al anterior registro (SKIP –1) y por último termina la
condición (ENDIF).

BOF (Begin Of File)


1
2
3 Cuando encuentra el fin del archivo (IF EOF())se
4 regresa al anterior registro con la orden SKIP –1
EOF(End Of File) de esta manera no mostrara el registro en blanco

De esta forma se cambia el mensaje y el error cuando se llega al final del archivo de Tabla; pero
también tenemos el mismo problema cuando se llega al principio del archivo.

3. A continuación modificaremos el código del control cmdANTERIOR.

1) Regrese a la
ventana de código
y seleccione el
control
cmdANTERIOR

2) Escriba las siguientes líneas de código:


IF BOF() THEN
MESSAGEBOX("SE DETECTO EL PRINCIPIO DE LA TABLA...")
GO TOP
ENDIF

Observe que ahora se utilizo la función BOF() dentro de la condición IF.

La orden GO TOP regresa el apuntador de registros al primer registro de la tabla.

CORPORATIVO CETEC - SICASA 151


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

3) De un clic en el
botón INICIO para
4) De un clic en el botón
asegurarse que se
encuentra en el ANTERIOR y observe el
primer registro mensaje

BOF (Begin Of File) Cuando encuentra el principio del archivo (IF


1 BOF()) se cumple la condición y la orden GO
2 TOP regresa el apuntador de registros al primer
3 registro de la tabla
4
EOF(End Of File)

Como habrá observado en el ejercicio se agregaron 4 botones de comando para poder desplazarse
sobre los registros de la tabla sin embargo esos botones sólo servirán para ese formulario, es decir si
se crea otro formulario para ver los registros de la tabla CALIFICACIONES, se tendría que insertar
nuevamente cuatro botones y volver a escribir en ellos el código necesario para poder desplazarse
sobre los registros.

Entonces porque mejor no hacer una clase contenedora la cual almacene los botones y el código
para que cuando la necesitemos en un formulario sólo baste con insertarla tal y como lo hacemos con
una etiqueta o un cuadro de texto.

CREACIÓN DE UNA CLASE CONTENEDORA

 PRÁCTICA

1. Mantenga abierta la base de datos EJEMPLO y realice lo siguiente.

Deje abierta su base


de datos EJEMPLO
si no esta abierta
proceda a abrirla

CORPORATIVO CETEC - SICASA 152


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

1) De un clic
en el botón
3) De un clic en el
Nuevo
botón Nuevo archivo
para crear la clase

2) De un clic en la
opción Clase para
seleccionarla
como tipo de
archivo a crear

Observe que se
abre la ventana
Nueva base

4) Escriba
EXPLORAR como
nombre de la clase

5) De un clic en el botón
para abrir la lista de
elementos

6) Seleccione la opción
Container (contenedor)

CORPORATIVO CETEC - SICASA 153


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

7) De un clic en el botón
para seleccionar la
carpeta donde se
almacenara el archivo
clase

Busque su
carpeta de
trabajo

8) Grabe el archivo
que contendrá la clase
como: MIS CLASES

9) De un clic en el
botón Guardar

10) De un clic
en el botón
Aceptar

Ruta donde se
grabo la clase

Observe que se abrió la


ventana Diseño de clases
y el control
CONTENEDOR

CORPORATIVO CETEC - SICASA 154


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

11) Ajuste más o menos


este tamaño al
contenedor
arrastrándolo de los
tiradores que contiene el
control en ambos lados

12) Agregue los cuatro


botones que utilizaremos para
desplazarnos por los registros

Recuerde de un
clic en el botón
propiedades para
mostrar la ventana
de Propiedades
Ventana de
Propiedades

13) Cambie la propiedad


Caption de cada botón como
se muestra en la ventana

14) Cambie la propiedad NAME de cada botón por:


cmdINICIO, cmdSIGUIENTE, cmdANTERIOR y cmdULTIMO

CORPORATIVO CETEC - SICASA 155


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

2. A continuación escribiremos el código que contendrá cada botón para desplazarse por los
registros de la tabla.

1) De doble clic sobre el botón


INICIO para abrir la ventana de
código

Verifique que se
encuentre en el
evento CLICK

2) Escriba la orden para enviar el apuntador de registros al primer


registro: GO TOP y la orden para actualizar los datos del
formulario: THISFORM.REFRESH

3) De la lista de
objetos seleccione
el control
cmdSIGUIENTE

4) Escriba la orden para avanzar al siguiente registro: SKIP +1 y


la condición (IF) para saber si se encuentra en el último registro
como lo hizo en el ejemplo anterior

CORPORATIVO CETEC - SICASA 156


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

5) De la lista de
objetos
seleccione el
control
cmdANTERIOR

6) Escriba la orden para regresar al anterior registro: SKIP –1 y la


condición para saber si el apuntador de registros se encuentra al
principio de la tabla como lo hizo en el ejercicio anterior o como lo
muestra la ventana de ejemplo

9) Grabe Los
cambios
7) De la lista de realizados en la
objetos clase
seleccione el
control
cmdULTIMO

10) Cierre la
8) Escriba la orden para ir al último ventana de
registro de la tabla: GO BOTTOM código

11) Cierre la
ventana
Diseñador de
clases

CORPORATIVO CETEC - SICASA 157


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

Hasta este momento se ha creado la clase EXAMINAR la cual contiene un control Contenedor
(container) con cuatro botones de comando que nos permiten desplazarnos por los registros de una
tabla. Cada vez que se requiera crear un formulario para mostrar los registros de una tabla, sólo se
tiene que pegar la clase en el formulario y no volver ha insertar los botones y generar el código para
poder desplazarse; esta es la de una clase que sólo se crea una vez y después se utiliza agregándola
al formulario que uno desea.

A continuación crearemos un formulario donde utilizaremos la clase.

3. Cree un nuevo formulario y realice lo siguiente.

1) De un clic con el
botón derecho del
mouse sobre un
área del formulario y
del menú contextual
seleccione la opción
Entorno de datos

2) Seleccione la
tabla
CALIFICCIONES y
de un clic en el
botón Agregar

3) Después de agregar
la tabla cierre la ventana

CORPORATIVO CETEC - SICASA 158


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

4) Seleccione la
línea Campos y 5) Cierre la
arrástrela con el ventana entorno
mouse hacia el de datos
formulario

7) De un clic
en el botón
6) De un clic en un
Ver clases
y de la lista área en blanco para
seleccione quitar la selección
de los campos
Agregar

8) Seleccione el
archivo MIS
CLASES que
almaceno la clase
Examinar
9) De un clic en el
botón Abrir

CORPORATIVO CETEC - SICASA 159


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

Observe que la
barra de
herramientas
Controles del
formulario ha
cambiado
mostrando las
clases que
contiene el archivo
MIS CLASES

10) Acerqué el
puntero del
mouse sobre
el control
Contenedor y
observe que
aparece el
nombre que le
asignamos al
momento que
se creo la
clase

11) De un clic
sobre el
12) Abra un área
control
Explorar para en la parte inferior
del formulario y
seleccionarlo
observe que se
presentan los
controles que se
crearon en la
clase

Como habrá notado no se crearon de nuevo los controles de comando para desplazarse sobre los
registros de la tabla calificaciones si no que sólo se agregó la clase al formulario.

CORPORATIVO CETEC - SICASA 160


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

14) Grabe su
formulario con el
nombre de
CONSULTA2 y
ejecútelo

13) Abra el control


de tal forma que
se visualicen
todos los botones
de comando

15) Pruebe todos los


botones de la clase
y observe su función

Observe
también los
mensaje
desplegados
por la clase

Ahora podrá crear cualquier formulario donde se desee ver los registros de la tabla y sólo bastara con
pegar la clase; sin necesidad de volver a crear los botones y su código correspondiente.

CORPORATIVO CETEC - SICASA 161


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

16) Regrese al
modo diseño del
formulario y de
un clic en el
botón Ver clases
y de la lista
seleccione
ESTANDAR
para ver de
nuevo todos los
controles

17) Cierre su
formulario

Observe que
se muestran
nuevamente
todos los
controles

Pero que pasa cuando queremos modificar la clase, tal vez mandar un mensaje en el botón ULTIMO o
tal vez nos equivocamos en el mensaje y queremos cambiarlo.

4. Enseguida procederemos a entrar de nuevo a la clase y modificarla.

1) De un clic en el
botón Abrir (es
importante que
tenga cerrado el
formulario)

2) De un clic para ver la lista de


Tipo de archivos y seleccione la
ultima opción: Biblioteca de
clases visuales

CORPORATIVO CETEC - SICASA 162


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

3) Seleccione el
archivo Mis
clases

4) De un clic en
Aceptar para abrir
el archivo

5) De un clic en el Observe que dentro del archivo sólo


archivo Mis clases hay una clase (EXPLORAR)

6) De un clic en el
botón Abrir para
abrir la clase
Explorar

Observe que ahora estamos en la


ventana Diseñador de clases
dentro de la clase Explorar
7) De doble clic
sobre el botón
INICIO para
abrir la ventana
de código

CORPORATIVO CETEC - SICASA 163


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

8) Escriba como última línea:


MESSAGEBOX("SE ENCUENTRA EN ESTOS MOMENTOS EN EL PRIMER REGISTRO")

8) En la lista de
objetos
10) Cierre la
seleccione el
control ventana de
cmdULTIMO código

9) Escriba como última línea:


MESSAGEBOX("SE ENCUENTRA EN ESTOS MOMENTOS EN EL ULTIMO REGISTRO")

11) Grabe los


cambios realizados
en la clase 12) Cierre la clase
EXPLORAR

CORPORATIVO CETEC - SICASA 164


CAPÍTULO 5 FORMULARIOS VISUAL FOXPRO

13) Abra su
formulario
CONSULTA2

Recuerde seleccionar
Formulario como tipo de
archivo a abrir

Observe el mensaje
14) Ejecute su
formulario y de un
clic en el botón 15) De un clic en el
INICIO botón ULTIMO y
observe el mensaje

Como habrá observado no fue necesario modificar la clase que se inserto en el formulario, sólo basto
con hacer o efectuar los cambios en la clase base y automáticamente todos los formularios a donde se
insertó dicha clase heredan los cambios a esto se le como HERENCIA, (en el ámbito de la
programación orientada a objetos).

Recuerde: Una Clase es una plantilla que define las características de un objeto y asigna su comportamiento del
mismo.

Recuerde: Que lo optimo es crear una clase, y después solo basta con agregarla al formulario que Ud. desee.

CORPORATIVO CETEC - SICASA 165

También podría gustarte