Date post: | 03-Jul-2015 |
Category: |
Documents |
Upload: | jose-de-la-rosa-vidal |
View: | 3,647 times |
Download: | 3 times |
Guis del Usuario Revista Compus Prácticas FoxPro
INTRODUCCION
En este módulo daremos a conocer al estudiante el lenguaje de programación
Visual Fox Pro 6.0. Se pretende familiarizar al alumno con el entorno de desarrollo de
aplicaciones para base de datos.
Visual Fox Pro pertenece a la familia Xbase lo que hace que su programación sea
sencilla, estructurada y más fácil de entender tanto para programadores principiantes como
programadores expertos.
Es una potente herramienta orientada a objetos para la creación y administración de
bases de datos y para el desarrollo de aplicaciones profesionales. Ofrece todo lo necesario
para organizar la información en tablas, realizar consultas, crear bases de datos
relacionales, programar aplicaciones, informes, etc.
Prof. José de La Rosa Página 1
Guis del Usuario Revista Compus Prácticas FoxPro
VISUAL FOXPRO
Visual FoxPro es un gestor de base de datos, orientado a la programación de
objetos. Se dice esto porque utiliza objetos prediseñados, a la vez Visual FoxPro es una
aplicación que permite gestionar y manipular información organizada en una base de datos.
Puede elaborar consultas, informes, pantallas, menús y proyectos sobre una o varias
tablas.
Desarrolla aplicaciones en un ambiente orientado a objetos con características
cliente/servidor.
CONCEPTOS BÁSICOS:
Base de Datos: Una base de datos o banco de datos es un conjunto de datos pertenecientes
a un mismo contexto y almacenados sistemáticamente para su posterior uso. En este
sentido, una biblioteca puede considerarse una base de datos compuesta en su mayoría por
documentos y textos impresos en papel e indexados para su consulta.
Existen unos programas denominados sistemas gestores de bases de datos, abreviado
SGBD, que permiten almacenar y posteriormente acceder a los datos de forma rápida y
estructurada. Las propiedades de estos SGBD, así como su utilización y administración, se
estudian dentro del ámbito de la informática. Las Bases de datos se agrupan en tablas.
Tablas o entidades: Tabla en las bases de datos, se refiere al tipo de modelamiento de
datos, donde se guardan los datos recolectados por un programa. Su estructura general se
asemeja a la vista general de un programa de Hoja de cálculo.
Las tablas se componen de dos estructuras:
Campo: Corresponde al nombre de la columna. Debe ser único y además de tener un tipo
de dato asociado.
Registro: Corresponde a cada fila que compone la tabla. Allí se componen los datos y los
registros. Eventualmente pueden ser nulos en su almacenamientos.
En la definición de cada campo, debe existir un nombre único, con su tipo de dato
correspondiente. Esto es útil a la hora de manejar varios campos en la tabla, ya que cada
nombre de campo debe ser distinto entre sí.
A los campos se les puede asignar, además, propiedades especiales que afectan a los
registros insertados. El campo puede ser definido como índice o autoincrementable, lo cual
Prof. José de La Rosa Página 2
Guis del Usuario Revista Compus Prácticas FoxPro
permite que los datos de ese campo cambien solos o sean el principal indicar a la hora de
ordenar los datos contenidos.
Cada tabla creada debe tener un nombre único en la cada Base de Datos, haciéndola
accesible mediante su nombre o su sinónimo (dependiendo del tipo de base de datos
elegida).
Ingreso al programa:
Haga clic en el botón de Inicio.
Elija Programas.
Luego Microsoft Visual FoxPro.
Luego el icono de Microsoft Visual FoxPro 6.0
Descripción del Entorno del Programa:
BARRA DE MENÚS: Contiene órdenes para.
Archivo: Abrir, guardar, cerrar, revertir, importar, exportar, imprimir y preparar
página, abrir archivos utilizados recientemente y salir de un archivo o de
Visual FoxPro.
Edición: Deshacer operaciones, seleccionar y editar texto, buscar y reemplazar
características; vínculos e información sobre el objeto.
Ver: Visualizar las barras de herramientas.
Prof. José de La Rosa Página 3
Barra de TítuloBarra de Menús
Barra de Herramientas
Ventana de Comandos
Barra de Estado
Guis del Usuario Revista Compus Prácticas FoxPro
Herramientas: Asistentes, ortografía, macros, examinador de clases, ventanas de
seguimiento y de depuración y opciones.
Programa: Ejecutar, cancelar, reanudar, suspender y compilar.
Proyecto: Nuevo, agregar, modificar, ejecutar, quitar y cambiar nombre de archivos;
incluir, establecer principal y editar descripción; información de proyecto,
errores y generar; limpiar proyecto.
Ventana: Visualizar ventanas.
Ayuda: Contenido, búsqueda de ayuda y soporte técnico.
BARRA DE HERRAMIENTAS: Posee íconos para los accesos directos.
VENTANA COMANDOS: Se puede introducir órdenes para realizar unas tareas
específicas.
EL ADMINISTRADOR DE PROYECTOS:
EL Administrador de proyectos está organizado de forma muy parecida a un archivador.
Consta de varias fichas, tales como: TODO, DATOS, DOCUMENTOS, CLASES,
CODIGO y OTROS. Estas fichas le proporcionan un rápido y fácil acceso a los objetos
que utilizará en el proyecto. Cuando se desarrolla una aplicación se utilizan las técnicas de
ratón “señalar y pulsar” o “arrastrar y colocar” para poder acceder y manipular los
componentes de la aplicación.
PASOS PARA CREAR UN PROYECTO:
- Desde el Menú de Archivo de Visual FoxPro, seleccione NUEVO
- Debajo del Botón de tipo de Archivo, selecciones PROYECTO
Prof. José de La Rosa Página 4
Guis del Usuario Revista Compus Prácticas FoxPro
- Pulse el botón NUEVO ARCHIVO
- Introduzca el nombre del proyecto.
- Pulse el Botón CREAR.
- Establezca la vía de acceso del Proyecto desde la ventana de Comandos con la orden
SET DEFAULT TO ejemplo: SET DEFAULT TO D:\VFP\PROYEC1
Una recomendación, cree un directorio para su aplicación y dentro de el, uno para
las tablas, otro para los informes, formularios y recursos (archivos BMP, librerías, etc.), es
importante mantener un orden, le ahorrara dolores de cabeza para ubicar un archivo, o
diferenciar cuales son externos (que deben acompañar al ejecutable, como son las tablas,
librerías, archivos BMP, etc.)
COMANDOS BÁSICOS PARA TRABAJAR CON PROYECTOS:
Create Project: Crea un nuevo Proyecto
Modify Project: Modifica la estructura del proyecto.
He aquí algunos de los elementos que se fijan en la configuración del sistema:
SAFETY = OFF && no avisa antes de sobrescribir archivos
Prof. José de La Rosa Página 5
Guis del Usuario Revista Compus Prácticas FoxPro
TALK= OFF && no despliega el progreso
ECHO= OFF && inicialmente desactiva el rastreo
DEBUG= ON && habilita el rastreo y la depuración
RESOURCE=FOXUSER && elige un archivo de recursos
RESOURCE=OFF && no se use hasta que se solicite
COMMAND= DO PROG && corre PROG al inicio
Otros comandos de configuración son:
SET CENTURY ON/OFF
SET CLOCK ON/OFF
SET DATE
SET DELETE ON/OFF
SET ECHO ON/OFF
SET SYSMENU
CREACIÓN DE UNA BASE DE DATOS:
En un proyecto, una base de datos se crea colocando la información en tablas con sus
respectivas relaciones utilizando de ventana de diseño.
Desde el administrador de proyectos, pulse la ficha DATOS.
- Desde la lista de apartados de datos seleccione BASE DE DATOS.
- Pulse el Botón NUEVO.
Prof. José de La Rosa Página 6
Guis del Usuario Revista Compus Prácticas FoxPro
- Escriba el Nombre de la nueva base de datos.
- Pulse el botón CREAR (Debe aparecer la Ventana de Diseño de la Base de Datos )
Al comenzar un nuevo proyecto, el generador estará vacío. Se deben crear las
tablas para almacenar la información en contenedor (Ventana de Diseño) de la Base de
Datos y Luego se establecen la relaciones entre cada una de ellas.
Comandos Básicos para el manejo de de una Base de Datos
Create Database Crea una nueva Base de Datos.Modify Database Modifica la estructura de la Base de Datos.Open Database Abre una Base de Datos guardada.Close Database Cierra la Base de Datos.
Descripción de los botones de la Barra de herramientas (Diseñador de Base de
Datos):
Crear una nueva tabla.
Agregar una tabla existente
Eliminar una tabla seleccionada
Modificar una tabla seleccionada
Prof. José de La Rosa Página 7
Contendedor de la Base de Datos
Barra de herramientas para BD
Guis del Usuario Revista Compus Prácticas FoxPro
Creación de Vistas remotas
Creación de Vistas locales
Editar Procedimientos almacenados en la Base de Datos
Creación de Conexiones con vistas remotas
Examinar el contenido la tabla (BROWSE)
Los nombres de las tablas deben ser de una a ocho caracteres de largo y deben tener la
extensión predeterminada .dbf (database file: archivo de Base de Datos)
CREACIÓN DE TABLAS:
Las tablas pueden agregarse a una base de datos utilizando dos herramientas : El Asistente
de Tablas o el Generador de Tablas. Para realizarlo seguirm los pasos siguientes:
Click en el botón de Nueva tabla, aparecerá la ventana Nueva Tabla.
Se selecciona Nueva Tabla, luego aparece la ventana de guardar el archivo,
seleccione el directorio y el nombre de la tabla y luego presione el boton de guardar.
Nos aparecerá la ventana del Diseñador de tablas:
Comandos básicos para el manejo d las tablas:
Create <Nombre> Crea una nueva tabla.Use <Nombre> Selecciona la tabla respectiva.Use <Nombre> Alias <Alias> Abre la tabla y selecciona el área de trabajo en la cual se
desea trabajar.Use Cierra las tablas en el área de trabajo activo.
Prof. José de La Rosa Página 8
Guis del Usuario Revista Compus Prácticas FoxPro
Modify Structure Modifica la estructura de la tabla abierta.Select <N> Selecciona el área N de trabajo.
CREACIÓN DE CAMPOS:
Los campos no deben de contener caracteres especiales, fuera del carácter "Guión bajo", y
tampoco puede empezar con un número. Pueden ser cuales quiera de varios tipos:
Ingreso de campos: Igual que en las versiones anteriores, la definición de campos es igual.
Se introduce el nombre del campo, el tipo de datos que soportar y el tamaño. Los nombres
de los campos pueden tener hasta 254 caracteres sin espacios en blanco.
Tipos de Campos
Los campos no deben de contener caracteres especiales, fuera del carácter "Guión bajo", y
tampoco puede empezar con un número. Pueden ser cuales quiera de varios tipos:
Tipo Descripción Ejemplo
Carácter Texto alfanumérico La dirección de un cliente
Monetario Unidades monetarias Precio de compra
Numérico Números enteros o decimales de hasta 20 dígitos
Cantidad de artículos pedidos
Flotante Este no lo utilizaremos en este manual pues sólo sirve por compatibilidad con dBASE V, es equivalente al formato numérico.
Población en el mundo.
Fecha Día, mes y año, el formato puede depender del estado del comando SET DATE
Fecha en que se realizó un pedido
FechaHora datos cronológicos que constan de día, mes, año, horas, minutos y segundos
Fecha y hora en que un empleado llegó al trabajo
Doble Puede guardar un valor numérico de signo flotante de doble precisión
Datos procedentes de experimentos que requieren un elevado grado de precisión
Entero Valores numéricos no decimales (números enteros)
Número de línea de un pedido
Lógico Verdadero o Falso Si se ha completado o no un pedido
Memo Texto alfanumérico de longitud indeterminada, similar a un procesador de texto
Notas de un registro telefónico sobre las llamadas
General Permite guardar datos tipo OLE, por Hoja de cálculo de Excel, un control
Prof. José de La Rosa Página 9
Guis del Usuario Revista Compus Prácticas FoxPro
ejemplo imágenes, sonidos u otros creados por una aplicación diferente.
ActiveX
Carácter (binario)
Igual que Character, pero los valores no se traducen cuando cambia la tabla de códigos
Las contraseñas de usuario almacenadas en una tabla y usadas en distintos países
Memo (binario)
Igual que Memo, pero los valores no se traducen cuando cambia la tabla de códigos
Un archivo de comandos de inicio de sesión empleado en distintos países
Definición del Display:
Formato: Es el formato de salida del campo, ejemplo si fuera númerico 9,999.99 o si fuera
carácter !!!!!!!!!!!!, para que solo acepte mayusculas
Máscara de entrada: Igual que el Format, lo único que es para la entrada de datos.
Título: Descripción mas precisa del campo, es de utilidad al diseñar los Formularios.
Definición de reglas de validación a nivel de campo:
La validación son triggers o eventos que se ejecutan a nivel de campo. Ejemplo: una
validación de un campo que solo acepte números positivos. (id > 0)
Regla: Es la regla de validación, ejemplo: id > 0, si queremos que acepte valores positivos.
Mensaje: Es el mensaje personalizado que queremos que aparezca en pantalla a la hora de
violarse la regla de validación del campo. Ejemplo : ‘Solo se aceptan números positivos’
(nota: el texto debe escribirse entre comillas).
Valor Predeterminado: (nota: hay que respetar el tipo de dato del Campo)
Proceso de Indexación:
Cuando haya creado una tabla, puede ordenar los datos para acelerar la obtención de datos
mediante índices. Con los índices, puede procesar rápidamente los registros para
mostrarlos, consultarlos o imprimir. También puede seleccionar registros, controlar si se
introducen valores duplicados en un campo y admitir relaciones entre tablas.
VFP ofrece cuatro tipos de índice diferentes, cada uno con características predeterminadas:
Principal
Candidato
Normal
Único
Prof. José de La Rosa Página 10
Guis del Usuario Revista Compus Prácticas FoxPro
Los índices principales, aseguran que sólo se introducen valores únicos en un campo y
determinan el orden en el que se procesan los registros. Puede crear un índice principal
para cada tabla si la tabla está incluida en la base de datos. Si la tabla ya tiene un índice
principal, agregue un índice candidato. Este índice es el que define el campo clave
Los índices candidatos, también imponen valores únicos y determinan en qué orden se
procesan los registros, como un índice primario. Puede tener varios índices candidatos por
tabla en bases de datos y en tablas libres.
Los índices normales, determinan el orden en que se procesan los registros pero permite
que se introduzcan valores duplicados en un campo. Puede agregar más de un índice
normal a una tabla.
Por compatibilidad con versiones anteriores, también puede crear un índice único que
selecciona y ordena un subconjunto de registros según la primera aparición de un valor en
el campo que especifique. Si quiere seleccionar registros de esta manera, es posible que
quiera crear una consulta o una vista en lugar de ello.
Por ejemplo si en este momento necesitáramos una lista de precios probablemente la
querríamos en orden alfabético y en otras ocasiones según el código, solucionaremos
ambos casos creando dos índices:
Relación entre Tablas:
Relación temporal: Es la que consigue usando el comando SET RELATION, su mismo
nombre lo indica la relación se efectúa solo por un instante, al dar la orden CLOSE DATA
se pedrera inmediatamente.
Relación permanente: se consigue al construir la base de datos, este tipo de relación es
persistente.
Comandos para vincular tablas:
SET RELATION TO
Crea una relación entre una base de datos padre, la que deberá estar abierta en el área de
trabajo actualmente seleccionada, y una base de datos hija, ya abierta en otra área de
trabajo.
SINTAXIS
Prof. José de La Rosa Página 11
Guis del Usuario Revista Compus Prácticas FoxPro
SET RELATION TO [<expresión1> INTO <expresión numérica1>|<expresión carácter1>]
Luego que creamos una tabla nos saldrá la siguiente ventana:
Si presionamos que SI nos aparecerá una nueva ventana en la cuál vamos a empezar a
rellenar los registros para dicha tabla.
Comandos para el manejo de registros:
Cuando utilizamos inicialmente una tabla de FoxPro, tú estás ubicado en el primer registro
de la tabla. Puedes mover este puntero de registro imaginario alrededor de la tabla, en
diversas formas:
Skip Mueve el puntero hacia adelante un registro
Skip -<N> mueve el puntero hacia los N registros atrás. (Retroceder)
Go TOP Mueve el puntero al primer registró
Go bottom Mueve el puntero al último registro en la tabla
Go +<N> Mueve el puntero del registro a los N registros adelante. (Avanzar)
* Prueba estos comandos primero digita uno de ellos y luego digita list y verás los
resultados.
Mencionaremos otros comandos que son de gran ayuda al momento de manipular los
datos:
APPEND Agrega registros a la base de datos seleccionada.
APPEND FROM Agrega registros desde otra tabla al final de los registros de la tabla
seleccionada.
APPEND BLANK Agrega un registro en blanco en la tabla abierta.
DELETE Borra el registro activo.
DELETE ALL Borra todos los registros de la tabla abierta.
DELETE ALL FOR <CONDICION> Borra todos los registros que cumplan con la
Condición.
Prof. José de La Rosa Página 12
Guis del Usuario Revista Compus Prácticas FoxPro
COPY FILE Copia cualquier tipo de archivos
COPY STRUCTURE Almacena la estructura de una base de datos en una nueva base
COPY TO Copia datos de una base de datos a un archivo
COUNT Determina el nùmero de registro en la base de datos
DISPLAY FILES Muestra información de base de datos
DISPLAY MEMORY Despliega la información de las variables de memoria
DISPLAY STATUS Despliega información de la condición de FOX
DISPLAY STRUCTURE Muestra la estructura de una base de datos
MODIFY COMMAND Abre una ventana de modificación de texto
REPLACE Actualiza los registros en una base de datos.
Otro tipo de comandos útiles para la manipulación de tablas y registros son las
FUNCIONES, las cuales se dividen en:
) Cadenas o manejo de caracteres: este grupo de funciones gestiona el manejo de
caracteres.
) Matemáticas: permiten efectauar operaciones con valores numéricos.
) Manejo de fechas y hora: se encarga de gesstionar las variables de tipo fecha.
) Lógicas: Se encargan de efectuar operaciones de tipo lógico.
) Funciones de converción de tipos: conviertes variables de un tipo a otro.
Funciones:
Son procesos internos programadores que pueden ser llamados desde cualquier punta de
Visual Fox lo que diferencia de los mandatos de las funciones es que estas devuelven un
valor. Aceptan una serie de parámetros, y se reconocen por el uso de paréntesis para
encerrar los argumentos, por ejemplo DATE( ) y TIME ( ).
Las funciones se dividen de la siguiente forma:
Tipos de datos
Funciones de manejo de cadenas de caracteres.
Funciones de conversión de tipos
Funciones de fecha y hora
Funciones de manejo de valores numéricos
Funciones definidas por los usuarios (FDU)
Prof. José de La Rosa Página 13
Guis del Usuario Revista Compus Prácticas FoxPro
Antes de mostrar ejemplos definiremos dos componentes que se hacen necesarios en la
manipulación de datos:
Constante: Son valores predefinidos que no cambian nunca por ejemplo: valor1=15478,
cadena=”abcd”.
Variable: Se utilizan como identificadores de secciones de memoria donde se guarda
información, por ejemplo: var1=campo1, var2=tabla.campo.
Las variables se pueden definir como: publicas, privadas y locales ejemplo:
PUBLIC nombre, apellidos
PRIVATE sueldo
Operadores relacionales:
Los operadores se utilizan en tiempo de ejecuciòn para unir dos o màs elementos del
lenguaje.
Operadores aritméticos
( ) Agrupa subexpresiones
**, ^ Exponenciación
*, / Multiplicaciòn y división
% Módulo (resto de la división)
+, - Suma y resta
Operadores relacionales:
< Menor que
> Mayor que
<= Menor o igual que
>= Mayor o igual que
= igual a
<>, #, ¡=Distinto de
$ Contenido en
Ahora te daremos unos ejemplos con funciones en Visual FoxPro.
* Declaración de variables
cadena1 = SPACE(15)
cadena2 = SPACE(15)
número = 0
Prof. José de La Rosa Página 14
Guis del Usuario Revista Compus Prácticas FoxPro
cuenta = 0
* Asignación de datos
cadena1 = “abcd efgh ijkl”
* utilizando la función LEN para contar el número de la cadena
? LEN(Cadena1) && imprime en pantalla 14
? Cadena2= SUSBTR(cadena1,1,4) && imprime en pantalla abad
? DTOC(DATE())
? SIN (0)
Índices:
Cuando se insertan registros en una tabla estos no se encuentran ordenados, para ello es
necesario utilizar comandos que nos permitan ordenar los registros de acorde a la
información que necesitamos.
Comando SORT
Clasifica un archivo de base de datos
SINTAXIS
SORT TO <archivo> ON <campo> [/A] [/D] [/C]
[,<campo2> [/A] [/D] [/C]..]
[ASCENDING | DESCENDING]
[<alcances>]
[FOR <expresión lógica1>] [WHILE <expresión lógica2>]
[FIELDS <lista de campos>]
EJEMPLO:
USE persona
SORT TO persona_ordenada ON nombre
USE persona_ordenada
Persona persona_ordenada
Juan Martínez
Roxana Cuellar
Margarita Rosales
Pedro López
Eduardo Garay
Eduardo Garay
Juan Martínez
Margarita Rosales
Pedro López
Roxana Cuellar
Comando INDEX ON
Prof. José de La Rosa Página 15
Guis del Usuario Revista Compus Prácticas FoxPro
Crea un índice en un archivo de índices compuestos o bien un archivo de índice simple.
SINTAXIS
INDEX ON campo TO nombre de archivo IDX | TAG etiqueta
[OF archivo CDX][FOR expresión lógica] [COMPACT][ASCENDING | DESCENDING]
[CANDIDATE |UNIQUE ][ADDITIVE]
EJEMPLO:
USE persona
INDEX ON nombre TO persona.idx
El comando INDEX ON crea una archivo índice llamado persona.idx, el cual tendrá el
índice de el archivo persona.
Una mejor forma de crear un índice y en el cual Fox trabaja a una mejor capacidad es
creando un índice compuesto.
INDEX ON nombre TAG persona
De la forma anterior se crea un archivo índice persona.CDX.
También se pueden crear índices combinados con dos o más campos por ejemplo: INDEX
ON UPPER(LEFT(apellido,10) + LEFT(nombre,10)) TO nombre.
Consultas:
Las consultas son pedidos de información a Base de Datos. Se utilizan las consultas
cuando queremos realizar pedidos de datos a una base de datos.
Creando una consulta: Para crear una nueva consulta se puede de ingresar al menú
Archivo, luego seleccionar el submenú Nuevo, y de la ventana que nos muestra seleccionar
la opción Consulta, seguidamente de Nuevo Archivo.
Creación de Consultas Por Asistente
Paso 1 - Seleccionar campos.
Prof. José de La Rosa Página 16
Guis del Usuario Revista Compus Prácticas FoxPro
En este caso como las tablas ya están relacionadas, según las estructuras de los índices indicados, el paso siguiente es el Paso 3 de filtro de registro. En Valor Vamos a Poner un dato de la tabla que corresponde al Código.
Paso 4 - Ordenar registros
Paso 4a -Limitar registros 5.Finalizar
Guarda la consulta con el nombre: consulta1Informes:
Los informes son la representación gráfica de las consultas y tablas que posee una Base de
datos, utilice el Diseñador de informes para crear y modificar informes.
Para crear rápidamente un diseño sencillo de info.
me, elija Informe rápido del menú Informe. Informe rápido le solicita la entrada de los
campos y el diseño que desea para su informe.
Prof. José de La Rosa Página 17
Guis del Usuario Revista Compus Prácticas FoxPro
Opciones de la ventana
Bandas
De forma predeterminada, el Diseñador de informes muestra tres bandas: Encabezado de
página, Detalle y Pie de página. En la parte inferior de cada banda hay una barra
separadora. El nombre de la banda aparece en la barra gris junto a una flecha azul, que
indica que la banda está encima, no debajo, de la barra gris.
Puede agregar las siguientes bandas a su informe.
Banda Se imprime Contenido típico
Encabezado de
columna
Una vez por columna Título de columna
Pie de columna Una vez por columna Resumen, totales
Encabezado de
grupo
Una vez por grupo Precede los datos siguientes
Pie de grupo Una vez por grupo Valores calculados para grupos de datos
Título Una vez por informe Título
Fecha o número de página
Logotipo de la compañía
Cuadro alrededor del título
Resumen Una vez por informe Totales
Texto como Suma total
Regla:
El Diseñador de informes tiene una regla vertical y otra horizontal que puede utilizar para
colocar de forma más precisa los objetos en las bandas. Utilice las reglas junto con el
comando Ver del menú Mostrar posición para ayudarle en la colocación de los objetos.
La escala de la regla viene determinada por las configuraciones de medidas de su sistema. Puede cambiar de la escala predeterminada del sistema (pulgadas o centímetros) a píxeles desde dentro de Visual FoxPro. Si desea cambiar al valor predeterminado del sistema, cambie la configuración de medidas de su sistema operativo.
Creación de Reportes Con Asistente.
Paso 1 - Seleccionar campos Paso 2 – Agrupar Registros
Prof. José de La Rosa Página 18
Guis del Usuario Revista Compus Prácticas FoxPro
Paso 3. Estilo Paso 4 - Distribución
Paso 5 - Orden---codi_peli Paso 6. Finalizar
3. PROGRAMACIÓN:
Conceptos:
Usualmente se agrupa el código fuente en archivos de programa. Un archivo de programa
esta compuesto de varias sentencias, que incluyen comandos, funciones y estructuras de
control de flujo.
El compilador traduce el contenido de estos archivos de texto ASCII a código interpretado.
En cuanto el compilador ha traducido el código fuente crea un archivo con extensión .FXP
que es el que va a utilizar a partir de ese momento. Cada vez que el programador
Prof. José de La Rosa Página 19
Guis del Usuario Revista Compus Prácticas FoxPro
introduce algún cambio en el archivo .PRG el compilador compara la fecha de ambos
archivos y crea una nueva versión compilada del programa.
Haciendo el código legible:
Espacios en blanco: Significan áreas vacías dentro del código de programa, también
espacios, tabulaciones o líneas vacías.
Sangrado: Sangrar es la mejor manera de optimizar el código. Es una práctica
común sangrar dentro de comandos pares anidados, por ejemplo:
DO… ENDDO
IF… ENDIF
SCAN..ENDSCAN
DOCASE...ENDCASE
WITH…ENDWITH
Mayúsculas y minúsculas: Muchos programadores utilizan mayúsculas y
minúsculas para distinguir entre los elementos del programa; mayúsculas para los
comandos y minúsculas para las variables.
Comentarios: Los comentarios pueden existir en una línea precedidos por un
asterisco y después de una línea de código, si están separados de && consecutivos.
Continuar líneas largas de código: Puede continuar líneas largas de código en la
siguiente línea insertando un “;” al final de la línea.
Una de las técnicas más útiles en la programación son los encabezados de programa, por
ejemplo:
* Nombre del programa : nombre
* Autor : Héctor Hernández
* Propósito : Dibujar cuadros en la pantalla
* Fecha : 12/12/2001
Comandos de Asignación:
Para crear variables de memoria y darles valores al mismo tiempo, escriba lo siguiente:
Input: Imprime por pantalla un mensaje y me da la opción para capturar un valor en una
variable.
X=3
STORE “lunes” TO día
Para solamente crearlas:
Prof. José de La Rosa Página 20
Guis del Usuario Revista Compus Prácticas FoxPro
PUBLIC a, b, c
PRIVATE x, y, z
LOCAL nombre, trabaja
DIMENSION nombres(3)
Declaración de Variables.
Las variables temporales se pueden declarar utilizando los comandos anteriores,
únicamente, hay que tomar en cuenta la forma en que se van a declarar o escribir, como
ejemplo: Nom_Empleado; NomEmpleado, si son variables de memoria se le puede
anteponer una ‘m ó x’ de la forma siguiente, mNom_Empleado; xNom_Empleado,
también se pueden declarar variables haciendo saber el tipo de datos que maneja por
ejemplo: cNom_Empleado, nSueldo_Empleado; dFecha_Ingreso, etc.
Operadores:
Los operadores + y – son, por supuesto, usados para añadir y substraer números, pero
también se pueden usar en campos de caracteres. El operador más eslabona dos
expresiones de caracteres, campos o variables de memoria, de forma que Fred + Smith;
producirá: FredSmith. El operador menos quita espacio rezagado.
Operadores cíclicos y ramificaciones:
Las operaciones cíclicas y de ramificación son los mecanismos para crear la lógica de un
programa, ejemplo:
FOR I=1 TO 10
? I && Imprime los números del 1 al 10
ENDFOR
SELECT clientes
SCAN
? Clientes.nombre&&Lee un archivo desde el inicio hasta el final
ENDSCAN
SELECT clientes
GO TOP
DO WHILE NOT EOF()
? Clientes.nombre&& Lee un archivo desde el inicio hasta el final
SKIP
ENNDO
Prof. José de La Rosa Página 21
Guis del Usuario Revista Compus Prácticas FoxPro
Puede salir de estas construcciones cíclicas en cualquier momento mediante el comando:
EXIT.
La ramificación en VF es controlada con la construcción IF.. ENDIF, por ejemplo:
IF I >10
? [El contador excedió 10]
ENDIF
Los contadores se utilizan a menudo para salir de operaciones cíclicas:
L=1
DO WHILE L=LEN(nombrelista)
IF [CRUZ]$ nombrelista(L)
SEEK nombrelista(L)
IF nombre= [John]
DO prgnombre
LOOP
ENDIF
ENDIF
ENDDO
Se recomienda que cuando se utiliza un operador cíclico, un operador condicional, o
cualquier otro operador que abra y cierre una estructura se escriba el comando primero y
luego se realice el proceso, esto para no perderse en la programación.
Tipos de comandos
Vamos a dividir los comandos según su funcionalidad en los siguientes tipos:
1. Base de datos: Todos los que sirven para manipular bases de datos, tablas y
campos.
2. Entorno: Entorno del sistema operativo y de Visual Fox Pro.
3. Acceso compartido a datos: Acceso multiusuario a tablas y base de datos.
4. Entrada y salida: Los que permiten la interfaz entre la computadora y el usuario.
5. Programación: Los que tienen relación con el entorno de desarrollo de aplicaciones.
4. FORMULARIOS:
Creando un Formulario:
Click en: Archivo > Nuevo > ( ) Formulario > Nuevo archivo
Diseñador de formulario
Prof. José de La Rosa Página 22
Guis del Usuario Revista Compus Prácticas FoxPro
Conceptos básicos:
Objeto: Una instancia de una clase que combina datos y procedimientos. Por ejemplo, un
control de un formulario en ejecución es un objeto.
Formulario: Se utilizan para visualizar e introducir cualquier tipo de información y son el
medio de comunicación entre el usuario y los datos.
Propiedades: Un atributo de un control, campo u objeto de base de datos que se establece
para definir una de las características del objeto o un aspecto de su comportamiento. Por
ejemplo, la propiedad Visible afecta a la visibilidad en tiempo de ejecución de un control.
Puede cambiar los valores de las propiedades de objeto mediante la ventana Propiedades.
Evento: Una acción, reconocida por un objeto, para la cual puede escribir código de
respuesta. Los eventos pueden estar generados por una acción del usuario, como hacer clic
con el mouse o presionar una tecla, por código de programa o por el sistema, como ocurre
con los cronómetros.
Método: Una acción que un objeto es capaz de realizar. Por ejemplo, los cuadros de lista
tienen métodos llamados AddItem, RemoveItem y Clear para mantener el contenido de las
listas.
Barra de herramientas: Una serie de botones en los que se hace clic para realizar tareas
frecuentes. Las barras de herramientas pueden flotar en su propia ventana o bien puede
acopladas en los extremos superior, inferior o laterales de la ventana principal de Visual
FoxPro. Puede personalizar las barras de herramientas suministradas con Visual FoxPro,
Prof. José de La Rosa Página 23
Guis del Usuario Revista Compus Prácticas FoxPro
así como crear barras de herramientas propias mediante la clase de base ToolBar incluida
con Visual FoxPro.
BARRAS DE HERRAMIENTAS:
Nos muestra los controles básicos y disponibles del Visual FoxPro,
estos son llamados clases bases.
Tipos de Controles: Los controles son aquellos objetos que se
colocan en un formulario.
VENTANA DE PROPIEDADES: Nos permite editar
las propiedades de un formulario o sus objetos. La
ventana de propiedades se compone de dos partes, la
sección de controles ubicado en la parte superior, en el
cual dentro de una lista desplegable se encuentran todos
los objetos seleccionados.
En la parte inferior se encuentran las propiedades
existentes, las cuales se pueden dividir en fichas.
VENTANA DE CÓDIGO (SCRIPT):
Al hacer doble clic en un objeto determinado, se
muestra la ventana de código. En esta ventana es donde se escriben las sentencias propias
de Visual FoxPro para detallar la aplicación generada.
Objetos y propiedades básicas
Form
El formulario es un objeto de tipo contenedor.
Prof. José de La Rosa Página 24
Guis del Usuario Revista Compus Prácticas FoxPro
Los conjuntos de formularios acogen a uno o más formularios, o incluso barra de
herramientas. Ala hora de ejecutar el conjunto de formularios, se activan todos los
formularios definidos en el mismo.
Propiedad UsoCaption Título de la ventana o formaAutocenter Centra el formularioShowTips Para que se muestren los TooltipsClosable Visualiza el botón cerrar de la ventanaMaxButton Visualiza el botón maximizarMinButton Visualiza el botón minimizar ControlBox Visualiza el menú de control de la ventanaEventos o Métodos UsoInit Se dispara a la hora que se inicializan todos los objetos del
formularioLoad Se dispara antes que se inicialicen los objetos del formularios
(antes que el init)Destroy Se dispara al cerrar el formularioUnload Se dispara después de Destroy
Viñetas y cuadros de textoLas viñetas o Labels se utilizan para escribir etiquetas a los objetos.
Propiedad UsoCaption Título de la ventana o formaAlignment Especifica la alinación del textoName Nombre del objetoBackColor Color de fondoForeColor Color de la letra
Evento o Método UsoClick Se dispara al dar clic en el objetoMouseDown El evento MouseDown se desencadena al presionar un botón del
mouseMouseUp Ocurren cuando el usuario presiona (MouseDown) o suelta
(MouseUp) un botón del mouse
Los cuadros de texto sirven para capturar los datos de los campos.
Propiedades UsoControlSource Es la variable o nombre del campo al cual se hace referenciaValue Contenido de la variable o campo referenciado al ControlSourceVisible Si el control es visible al usuarioEnabled Si el control esta habilitado o noEvento o Método UsoClick Se dispara al dar clic en el objetoGotFocus Cuando el control toma el enfoque
Prof. José de La Rosa Página 25
Guis del Usuario Revista Compus Prácticas FoxPro
LostFocus Cuando el control pierde el enfoque
Botones de comandoUn control que está asociado a un comando. Cuando hace clic en el botón de comando en tiempo de ejecución, el comando asociado al botón se ejecuta.Propiedades UsoCaptio Etiqueta del comandoVisible Si el control es visible al usuarioEnabled Si el control esta habilitado
Evento o Método UsoClick Se dispara al dar clic en el objetoSetlFocus El cursor se va al objetoLostFocus Cuando el control pierde el enfoqueRefresh Refresca el objetoInit Se dispara a la hora que se se inicializa el objeto
Botones de opción y casillas de verificaciónUn control OptionButton muestra una opción que se puede activar o desactivar.
Propiedades UsoControlSource Es la variable o nombre del campo al cual hace referenciaValue Contenido de la variable o campo referenciado en
ControlSourceVisible Si el control es visible al usuarioEnabled Si el control esta habilitado o no
Evento o Método UsoInteractiveChange Se dispara cuando modificamos el campoInit Se dispara a la hora en que se inicializa el objetoClick Se dispara al dar click en el objetoValid Se dispara después de presionar Enter o Tab, se utiliza para
validarRefresh Refresca el objeto
Un control CheckBox muestra una X cuando está activado; la X desaparece cuando el control CheckBox se desactiva. Utilice este control para ofrecer al usuario una opción de tipo Verdadero o Falso o Sí o No. Puede usar controles CheckBox en grupos para mostrar múltiples opciones entre las cuales el usuario puede seleccionar una o más. También puede establecer el valor de CheckBox mediante programación con la propiedad Value.
Listas y cuadros combinadosLos cuadros de lista y los cuadros combinados presentan al usuario una lista de opciones. De forma predeterminada, las opciones se muestran verticalmente en una única columna, aunque también puede establecer múltiples columnas. Si el número de elementos supera a los que se pueden mostrar en el cuadro combinado o el cuadro de lista, aparecen automáticamente barras de desplazamiento en el control. El usuario puede entonces desplazarse por la lista hacia arriba o hacia abajo o de izquierda a derecha.
Prof. José de La Rosa Página 26
Guis del Usuario Revista Compus Prácticas FoxPro
Los cuadros de lista y los cuadros combinados son una manera efectiva de presentar al usuario gran cantidad de opciones en un espacio limitado.Propiedades UsoControlSource Variable a que hace referencia (campo donde se almacena el
valor de la lista)RowSource Tabla o query de los elementos de la listarowSourceType Tipo de la fuente (si es tabla o query)Visible Si el control es visible al usuarioEnabled Si el control esta habilitado o noBoundColumn Valor que retorna la lisa (número de la columna de Rowsource)BoundTo Especifica si el valor de la lista esta determinado por los valores
o por la propiedad ListIndex
Evento o Método UsoClick Se dispara al dar clic en el objetoSetlFocus El cursor se va al objetoLostFocus Cuando el control pierde el enfoqueRefresh Refresca el objetoInit Se dispara a la hora que se se inicializa el objeto
Cuadrícula:Un control que crea una cuadrícula y que le permite presentar los datos en un formato tabular. Los controles de tipo cuadrícula contienen encabezados de columna, columnas y controles de columna.
Propiedades UsoRecordSource Nombre de la tablaVisible Si el control es viisible al usuarioEnabled Si el control esta habilitado o noColumnCount Número de columnas del GrisDeleteMark Permite registro para borrar (Aparece en la parte izquierda del
Gris
Evento o Método UsoClick Se dispara al dar clic en el objetoSetlFocus El cursor se va al objetoLostFocus Cuando el control pierde el enfoqueRefresh Refresca el objetoInit Se dispara a la hora que se inicializa el objeto
Imágenes, controles OLE, timer, Marcos de páginaUn control que le permite incluir imágenes en un formulario.Hipervinculo con cualquier tipo de aplicación.Un control Timer puede ejecutar código a intervalos periódicos produciendo un evento Timer.Un marco de página es un objeto contenedor que contiene páginas. A su vez, las páginas contienen controles. Las propiedades pueden establecerse a nivel de marco de página, de página o de control.
Prof. José de La Rosa Página 27
Guis del Usuario Revista Compus Prácticas FoxPro
Uso de Clases
Los diseñadores ActiveX pueden proporcionar interfaces visuales para tareas que, de otro
modo, requerirían una gran cantidad de código. Por ejemplo, el diseñador UserConnection
incluido en la Edición Empresarial de Visual Basic proporciona herramientas visuales para
definir consultas de bases de datos complejas. En tiempo de ejecución, dichas consultas se
pueden invocar con muy poco código.
Similitudes entre los diseñadores ActiveX y los diseñadores integrados
Los diseñadores ActiveX son como los diseñadores de formularios en los siguientes
aspectos:
Los diseñadores ActiveX producen clases a partir de las cuales puede crear
objetos. Estas clases aparecen en la ventana Proyecto, igual que las clases de
formulario.
Las clases creadas con un diseñador ActiveX tienen sus propios módulos de
código, en los que puede escribir código para los procedimientos de evento
proporcionados por el diseñador.
Puede personalizar una clase si agrega propiedades, métodos y eventos a los
proporcionados por el diseñador ActiveX.
Los objetos creados a partir de las clases diseñadas pueden tener
características diferentes en tiempo de diseño y en tiempo de ejecución.
La ventana de diseño del diseñador ActiveX está totalmente integrada en el
entorno de desarrollo. Puede modificar su tamaño y configurarla de la misma forma
que las ventanas de diseño incorporadas.
Puede agregar al proyecto tantas instancias de un diseñador ActiveX como
considere necesario, de la misma forma que puede agregar tantos diseñadores de
formularios como quiera.
Prof. José de La Rosa Página 28
Guis del Usuario Revista Compus Prácticas FoxPro
PRACTICAS VISUAL FOXPRO
PRACTICA BASE DE DATOS:Realizar las siguientes tablas para la base de datos Pizzería:
Para llevar a cabo la Práctica Realiza los Siguientes pasos:
1. Crea un nuevo Proyecto con el nombre Pizza2. en el administrador de proyectos en la Ficha Datos, Selecciona la opción
Databases, y después la opción Nuevo, para crear la base de datos con el nombre Pizzería.
3. En el diseñador de Base de datos da un clic en la opción Nueva tabla. y haz lo sig;
4. Guarda esta tabla con el nombre de Pizza
Prof. José de La Rosa Página 30
En la Ficha Índices, selecciona Clave_pizza como principal.
Guis del Usuario Revista Compus Prácticas FoxPro
5. Ahora deberás crear otra tabla nueva con los siguientes campos.
6. Guarda esta tabla con el nombre de tamaños.
7. Ahora deberás crear una tercera tabla con los datos siguientes:
8. Guarda esta tabla con el nombre de Venta.
9. por ultimo deberás crear otra tabla como sigue:
10. Esta tabla la guardas con el nombre factura
Prof. José de La Rosa Página 31
En la Ficha Índices, selecciona Clave_tamaño como principal
Guis del Usuario Revista Compus Prácticas FoxPro
11. Crea las relaciones entre las tablas de tal form que te queden de la siguiente manera:
12. Ahora debemos introducir los datos a las tablas, comenzaremos por la tabla Pizza y la llenaremos como sigue:
Clave_Pizza Nombrean Anchoaspe Peperoniha Hawaianasa salami
13. seguimos con la tabla Tamaño
Clave_tamaño Tamañoch Chicame Medianagr Grande
14. Y Continuamos con la tabla Venta
Clave_Pizza Clave_Tamaño Precioan ch $ 20.00an me $ 25.00an gr $ 30.00pe ch $ 60.00pe me $ 65.00pe gr $ 80.00ha ch $ 55.00ha me $ 60.00ha gr $ 68.00sa ch $ 63.00sa me $ 87.00sa gr $ 98.00
15. ahora crearemos una tabla a partir de una consulta, en la ventana explorador de proyectos en la pestaña datos selecciona consulta y después nuevo
16. Visual Fox te preguntara que tablas quieres agregar para la realización de tu consulta, para eso tu debes agregar las siguientes tablas: Tamaña, Venta y Pizza.
Prof. José de La Rosa Página 32
Guis del Usuario Revista Compus Prácticas FoxPro
17. Una vez con las tablas agregadas, en la ventana diseñador de consultas en la ficha campos, debemos escoger cuales son los campos que nosotros queremos que nos muestre la consulta, pues bien vamos a seleccionar los siguientes: Pizza.nombre, tamaño.tamaño, Venta.Precio, por ultimo agregaremos una expresión como campo para esto en la misma ventana busca la opción funciones y expresiones y aparecerá la ventana siguiente:
18. Cuando esta ventana aparezca lo primero que debemos de hacer es seleccionar de la parte funciones Cadena, la opción “texto”, Luego en la parte de abajo donde dice Desde tabla Selecciona la tabla Pizza, en el cuadro campos aparecerán los campos de la tabla pizza de ese cuadro da doble clic al campo clave_pizza, una vez esto hecho en el cuadro expresión deberá de aparecer el siguiente texto: “Pizza.cleve.pizza”, una ves con esto ve otra vez a la lista Cadena y ahora selecciona el símbolo +, el símbolo aparecerá dentro de las comillas, salte de las comillas y pon un guion(-), la expresión deberá quedar: “Pizza.cleve.pizza+”-, ahora con lo que ya vimos has que la expresión final quede de la siguiente forma, recuerda que para sacar los campo de Tamaño primero debes seleccionar la tabla tamaño de Desde tabla.
Prof. José de La Rosa Página 33
Guis del Usuario Revista Compus Prácticas FoxPro
19. Una vez que tengas la Expresión da un clic al botón aceptar y después un clic en Agregar. Te deberá quedar como en la pantalla siguiente:
20. Realizar consultas diferentes para la base de datos:
PRACTICAS CON PROGRAMACIÓN:Objetivos
Luego de completar este laboratorio, el estudiante será capaz de:
Identificar los elementos del entorno integrado de desarrollo de Microsoft Visual FoxPro 6.0.
Prof. José de La Rosa Página 34
Guis del Usuario Revista Compus Prácticas FoxPro
Implementar soluciones mediante programación clásica. Declarar y asignar valores tanto a las variables de memoria como a los arreglos. Analizar como es el flujo de control de un programa. Crear funciones y procedimientos definidos por el usuario.
ConsideracionesPara el desarrollo del presente laboratorio Ud. deberá crear una carpeta D:\P_VFP\
PROGRAMA, para guardar sus trabajos correspondientes a este laboratorio.
Aplicación Nº 1En este primer ejercicio vamos a escribir un programa que lea tres números enteros
y determine el número mayor, el número central y el número menor. Debemos asumir que los tres números son siempre distintos.
Para el desarrollo de la presente aplicación ingresar a Microsoft Visual FoxPro. En la Ventana de Comandos digite la siguiente orden:
Modify Command Aplicacion01
A continuación se debe presentar el Editor de programas. En dicha ventana proceda a ingresar el código que se indica:
Close AllClearInput “Ingrese el valor de A?” To nAInput “Ingrese el valor de B?” To nBInput “Ingrese el valor de C?” To nCIf nA > nB Then
nMay = nA nMen = nBElse
nMay = nB nMen = nAEndIfIf nC > nMay Then nCen = nMay nMay = nCElse
If nC > nMen Then nCen = nC Else nCen = nMen nMen = nC EndIfEndIf? “Mayor =” + Str(nMay)? “Central =” + Str(nCen)? “Menor =” + Str(nMen)
Prof. José de La Rosa Página 35
Guis del Usuario Revista Compus Prácticas FoxPro
Para ejecutar su programa dar click en el botón Ejecutar ( ! ) de la Barra de herramientas Estándar, o realizar la combinación Ctrl. + E
Para volver a ejecutar su programa digitar la siguiente orden desde la Ventana de Comandos:
Do Aplicaion01
Aplicación Nº 2Un restaurante ofrece un descuento del 10% para consumos entre S/. 30.00 y S/.
50.00; un descuento del 20% para consumos mayores a S/. 50.00 nuevos soles; para todos los demás casos no se aplica ningún tipo de descuento. El ejercicio consiste en elaborar una programa que permita determinar el importe a pagar por el consumidor.
Para el desarrollo de la presente aplicación abrir una nueva ventana de edición e ingresar el siguiente código:
Close AllClearDo While .T.
Input “Consumo S/.” To nConsumoIf Type (“nConsumo”) = “N”
ExitEndIf
EndDoDo Case
Case nConsumo >= 30 And nConsumo <= 50nImporte = nConsumo * 0.9
Case nConsumo > 50nImporte = nConsumo * 0.8
OtherwisenImporte = nConsumo
EndCase? “Importe a pagar S/.” + Str(nImporte)
Aplicación Nº 3El ejercicio consiste en escribir un programa que lea “ n ” enteros y calcule la suma
total, la media aritmética, el máximo y el mínimo de los datos.
Para el desarrollo de la presente aplicación, de manera análoga que para los casos anteriores abrir una nueva ventana de edición e ingresar el siguiente código:
Close AllClearInput “Ingrese cantidad de números?” To nNDeclare aVector(nN)For nI = 1 To nN
Input “Número [” + Str(nI) + “]?” To aVector(nI)NextnMax = aVector[1]
Prof. José de La Rosa Página 36
Guis del Usuario Revista Compus Prácticas FoxPro
nMin = aVector[1]nSuma = 0For nI = 1 To nN
nSuma = nSuma + aVector[nI]If aVector[nI] > nMax Then
nMax = aVector[nI]EndIf
If aVector[nI] < nMin Then nMin = aVector[nI] EndIf NextnMedia = nSuma / nN? “Suma =” + Str(nSuma)? “Media =” + Str(nMedia, 10, 2)? “Máximo=” + Str(nMax)? “Mínimo=” + Str(nMin)
Aplicación Nº 4A continuación vamos a escribir una función que reciba como argumento de
entrada una cadena de caracteres y la devuelva en forma inversa, por ejemplo si se ingresa la cadena CORAZON deberá retornar NOZAROC.
Para el desarrollo de esta aplicación proceda de manera similar a los casos anteriores e ingresar el código que se muestra:
Close AllClearAccept “Ingrese una cadena?” To cCadena? “Cadena invertida =” + CadInv(cCadena)
Function CadInvParameters cCadenanN = Len(Alltrim(cCadena))Declare cTemporal(nN)For nI = 1 To nN
cTemporal(nI) = SubStr(cCadena, nI, 1)NextcInvertida = “”For nJ = nN To 1 Step -1
cInvertida = cInvertida + cTemporal(nJ)Next J
Return cInvertida
PRACTICAS CON FORMULARIOSObjetivos
Luego de completar este laboratorio, el estudiante será capaz de:
Implementar soluciones mediante programación orientada a objetos. Manejar las diferentes propiedades y eventos del formulario. Añadir controles a un formulario.
Prof. José de La Rosa Página 37
Guis del Usuario Revista Compus Prácticas FoxPro
Establecer las propiedades de los controles. Trabajar con procedimientos de eventos.
ConsideracionesPara el desarrollo del presente laboratorio Ud. deberá crear una carpeta D:\P_VFP\
FORMULARIO, para guardar sus trabajos correspondientes a este laboratorio.
Aplicación Nº 1Este ejercicio consiste en elaborar un formulario que permita leer un número entero
y visualice su tabla de multiplicar. Para construir la tabla de multiplicar vamos a utilizar un control cuadro de edición, el cual tiene propiedades similares a un cuadro de texto, pero permite escribir texto en líneas diferentes.
Para el desarrollo de esta aplicación, proceda a ubicar los siguientes controles en el formulario:
1 etiqueta1 caja de texto1 cuadro de edición1 botón de comandos
En seguida proceda a establecer las propiedades según se indica:
Form1Name FrmTablaCaption Tabla de multiplicarMaxButton .F.-FalsoMinButton .F.-Falso
Label1Name LblNumeroCaption Ingrese un número:
Prof. José de La Rosa Página 38
Guis del Usuario Revista Compus Prácticas FoxPro
Text1Name TxtNumeroAlignment 2-Centro
Edit1Name EdtTablaScrollBars 2-Vertical
Command1Name CmdLimpiarCaption \<LimpiarDefault .T.-Verdadero
Una vez diseñada la interfaz, proceda a ingresar el código que se indica a continuación:
Objeto: TxtNumero Procedimiento: InteractiveChange
nN = Val(Thisform.TxtNumero.Value)cS = “”For nI = 0 To 12
nP = nN * nIcS = cS + Str(nN) + “ * ” + Str(nI) + “ = ” + Str(nP) ;
+ Chr(13)NextThisform.EdtTabla.Value = cSThisform.Refresh
Objeto: CmdLimpiar Procedimiento: Click
Thisform.TxtNumero.Value = “”Thisform.EdtTabla.Value = “”Thisform.Refresh
Aplicación Nº 2Este ejercicio consiste en elaborar una aplicación que permita cambiar el aspecto de
una caja de texto. El usuario debe elegir el tipo de fuente a utilizar, el estilo, el color y el tamaño. El diseño de la interfaz debe ser similar a:
Prof. José de La Rosa Página 39
Guis del Usuario Revista Compus Prácticas FoxPro
Para el desarrollo de esta aplicación, proceda a ubicar los siguientes controles en el formulario:
5 etiquetas1 caja de texto1 cuadro combinado1 lista3 casillas de verificación1 grupo de botones de opción1 botón de comando
En seguida proceda a establecer las propiedades según se indica:
Form1Name FrmEditorAutoCenter .T.-VerdaderoCaption EditorMaxButton .F.-FalsoMinButton .F.-Falso
Label1Name LblTextoCaption Texto
Label2Name LblFuenteCaption Fuente
Label3Name LblTamañoCaption Tamaño
Label4Name LblEstiloCaption Estilo
Label5Name LblColor
Prof. José de La Rosa Página 40
Guis del Usuario Revista Compus Prácticas FoxPro
Caption Color
Combo1Name CboFuente
List1Name LstTamaño
Text1Name TxtTextoForeColor 255, 0, 0
Check1Name ChkNegritaCaption NegritaFontBold .T.-Verdadero
Check2Name ChkCursivaCaption CursivaFontItalic .T.-Verdadero
Check3Name ChkSubrayadoCaption SubrayadoFontUnderline .T.-Verdadero
OptionGroup1ButtonCount 3
Option1Name OptRojoForeColor 255, 0, 0
Option2Name OptVerdeForeColor 0, 255, 0
Option3Name OptAzulForeColor 0, 0, 255
Command1Name CmdSalirCaption \<SalirDefault .T.-Verdadero
Prof. José de La Rosa Página 41
Guis del Usuario Revista Compus Prácticas FoxPro
Una vez establecidas las propiedades de la interfaz, proceda a ingresar el código que se muestra a continuación:
Objeto: FrmEditor Procedimiento: Init
Thisform.CboFuente.AddItem(“Arial”)Thisform.CboFuente.AddItem(“Arial Black”)Thisform.CboFuente.AddItem(“Courier New”)Thisform.CboFuente.AddItem(“Garamond”)Thisform.CboFuente.AddItem(“Impact”)Thisform.CboFuente.AddItem(“MS Sans Serif”)Thisform.CboFuente.AddItem(“Technical”)Thisform.CboFuente.AddItem(“Times New Roman”)For nI = 8 To 20 Step 2
Thisform.LstTamaño.AddItem(Alltrim(Str(nI))) Next
Objeto: FrmEditor Procedimiento: QueryUnload
#DEFINE vfpYesNo 4#DEFINE vfpYes 6#DEFINE vfpQuestion 32If MessageBox(“¿Desea terminar la aplicación?”, ;
vfpQuestion + vfpYesNo, “Pregunta”) = vfpYes ThenRelease Thisform
ElseNoDefault
EndIf
Objeto: CboFuente Procedimiento: Click
Thisform.TxtTexto.FontName = Thisform.CboFuente.ValueThisform.Refresh
Objeto: LstTamaño Procedimiento: Click
nTamaño = Val(Thisform.LstTamaño.Value)Thisform.TxtTexto.FontSize = nTamañoThisform.Refresh
Objeto: ChkNegrita Procedimiento: Click
If Thisform.ChkNegrita.Value = 1 ThenThisform.TxtTexto.FontBold = .T.
ElseThisform.TxtTexto.FontBold = .F.
EndIfThisform.RefreshObjeto: ChkCursiva Procedimiento: Click
Prof. José de La Rosa Página 42
Guis del Usuario Revista Compus Prácticas FoxPro
If Thisform.ChkCursiva.Value = 1 ThenThisform.TxtTexto.FontItalic = .T.
ElseThisform.TxtTexto.FontItalic = .F.
EndIfThisform.Refresh
Objeto: ChkSubrayado Procedimiento: Click
If Thisform.ChkSubrayado.Value = 1 ThenThisform.TxtTexto.FontUnderline = .T.
ElseThisform.TxtTexto.FontUnderline = .F.
EndIfThisform.Refresh
Objeto: OptRojo Procedimiento: Click
Thisform.TxtTexto.ForeColor = RGB(255, 0, 0)Thisform.Refresh
Objeto: OptVerde Procedimiento: Click
Thisform.TxtTexto.ForeColor = RGB(0, 255, 0)Thisform.Refresh
Objeto: OptAzul Procedimiento: Click
Thisform.TxtTexto.ForeColor = RGB(0, 0, 255)Thisform.Refresh
Objeto: CmdSalir Procedimiento: Click
Thisform.QueryUnload
Bases de Datos con formulario:
Movimiento entre registros:Realizar la siguiente base de datos denominada COMPAÑÍA, y relacionar las tablas:
Prof. José de La Rosa Página 43
Guis del Usuario Revista Compus Prácticas FoxPro
Crear el siguiente formulario:
A todas las cajas de texto asigne la propiedad ENABLED = .f.Oculte los Botones, Guardar y Guardar Cambios, con la propiedad VISIBLE=.f.
Codigo para los Botonos:Boton Primero Procedimiento:ClickGo topThisform.refresh
Boton Anterior Procedimiento:ClickIf .Not. bof () then
Skip -1Else
Go bottomEndIfThisform.refresh
Boton Siguiente Procedimiento:ClickIf .Not. eof() then
Skip +1Else
Go TopEndIfThisform.refresh
Boton Primero Procedimiento:ClickGo BottomThisform.refresh
Boton Salir Procedimiento:ClickRelease Thisform
Prof. José de La Rosa Página 44
Guis del Usuario Revista Compus Prácticas FoxPro
Boton Eliminar Procedimiento:ClickMensaje= MESSAGEBOX(“Desea eliminar el Registro”,4+32+256,”Eliminar”)Do Case
Case mensaje=6DeletePackGo TopThisform.refresh
Case mensaje=7Thisform.refresh
EndCase
Boton Agregar Procedimiento:Click*Habilite todas las cajas de texto con la propiedad Enabled y muestre el boton Guardar con *la propiedad Visible Ejm: *Thisform.txtcod_empleado.enabled=.t.*Thisform.cguardar.visible=.t.Go BottomThisform.refreshAppend blankThisform.refresh
Boton Guardar Procedimiento:ClickMensaje= MESSAGEBOX(“Desea Guardar el Registro”,4+32+256,”Guardar”)Do Case
Case mensaje=6Thisform.refresh
Case mensaje=7Delete Pack
EndCase*Desabilite todas las cajas de texto con la propiedad Enabled y oculte el Botón Guardar *con la propiedad Visible Ejm:*Thisform.txtcod_empleado.enabled=.f.*Thisform.cguardar.visible=.f.
Thisform.refresh
Boton Editar Procedimiento:Click*Habilite todas las cajas de texto con la propiedad Enabled y muestre el boton Guardar *Cambios con la propiedad Visible Ejm: *Thisform.txtcod_empleado.enabled=.t.*Thisform.cguardar.cambios.visible=.t.
Mensaje= MESSAGEBOX(“Desea Guardar el Registro”,4+32+256,”Guardar”)Do Case
Case mensaje=6Thisform.refresh
Case mensaje=7
Prof. José de La Rosa Página 45
Guis del Usuario Revista Compus Prácticas FoxPro
Delete Pack
EndCaseThisform.refresh
Boton Guardar Camhios Procedimiento:Click*Desabilite todas las cajas de texto con la propiedad Enabled y oculte el Botón Guardar *Cambios con la propiedad Visible Ejm:*Thisform.txtcod_empleado.enabled=.f.*Thisform.cguardarcambios.visible=.f.Thisform.refresh
Laboratorio Nº 02Realizaremos el siguiente formulario de Facturación, para ello las indicaciones se encuentran en la parte inferior:
Carguemos Visual FoxPro
1. Para simular una Entidad vamos a crear las siguientes tablas en la Base de Datos Ventas, a las tablas Artículos y Clientes ingresar algunos registros.
Articulo.dbf Clientes.DBF
Artcod C 3 ClieCod C 3ArtDet C 40 ClieNom C 40ArtPre N 10 3 ClieRuc C 8ArtStk N 4
GuiaEnc.DBF Guiadet.DBFNguia C 6 Nguia C 6ClieCod C 3 ArtCod C 3IGV N 7 2 ArtDet C 40Total N 10 2 PreUni N 7 2
Cant N 5SubTotal N 10 2
Prof. José de La Rosa Página 46
Guis del Usuario Revista Compus Prácticas FoxPro
Temporal.DBFNguia C 6ArtCod C 3ArtDet C 40PreUni N 7 2Cant N 5SubTotal N 10 2Nota: Indexar la tabla GuiaEnc, campo Nguia con etiqueta Nguia
2. Creamos Nuevo formulario luego insertamos los objetos que se muestran en el grafico inferior.
3. Para el Entorno de Datos asignamos las cinco tablas creadas anteriormente
4. En tiempo de Diseño
Modificamos las propiedades de los objetos según la tabla siguiente:
Prof. José de La Rosa Página 47
Objeto: Propiedad Valor Objeto: Propiedad ValorControlSource Clientes.Clienom Alignment 2. CentroName CmbCliente DisableBackColor A Criterio del Usuario
Combo1 Row SourceType Campos Text1 DisableForeColor A Criterio del Usuario
Row Source Clientes.Clienom Enabled FALSOStyle 2. Lista desplegable Name txtNguiaValue 1 FontName A Criterio del Usuario
Alignment 2. Centro Column Count 4DisableBackColor A Criterio del Usuario Deleted mark .F. Falso
Text2 DisableForeColor A Criterio del Usuario Grid1 Name grdDetalle
Enabled FALSO RecordSource TemporalName TxtTotal BackColor A Criterio del UsuarioFontName A Criterio del Usuario GridLineColor Azul
Guis del Usuario Revista Compus Prácticas FoxPro
Antes de continuar con más cambios, vamos a insertar objetos Combo y Spinner en la columna1 y columna2 del Grid respectivamente, para ello prepare el control de Formularios luego:
Seleccione el objeto: Grid
Presione sobre ella : Botón DerechoSeleccione : ModificarHacemos Click en : ComboLuego Click sobre ab debajo de: Header1 de la primera columna del gridHacemos Click en : SpinnerLuego Click sobre ab debajo de: Header1 de la Segunda columna del gridSalimos de edición haciendo Click fuera del Grid
Presionamos Botón derecho sobre el GridPropiedades
Hacemos Clic en: grdDetalleSeleccionamos : Column1
Current ControlClic en Text1seleccionamos Combo1
Similar debe hacerlo para Spinner de la Segunda Columna
Continuamos cambiando el valor de las propiedades de los siguientes objetos:
Prof. José de La Rosa Página 48
Objeto: Propiedad Valor Objeto: Propiedad ValorControlSource Temporal.Artdet ControlSource Temporal.Artpre
Column1 CurrentControl Combo1 Column3 Name ColPreUniName ColDescripcion ReadOnly .T. Verdadero
ControlSource Temporal.Artdet ControlSource Temporal.SubTotalColumn2 CurrentControl Spinner1 Column2 Name ColSubTotal
Name ColDescripcion ReadOnly .T. Verdadero
Alignment 2. Medio Centro Alignment 2. Medio CentroHeader1 Caption Descripcion Header3 Caption Precio
FontBold .T. Verdadero FontBold .T. Verdadero
Alignment 2. Medio Centro Alignment 2. Medio CentroHeader2 Caption Cantidad Header4 Caption SubTotal
FontBold .T. Verdadero FontBold .T. Verdadero
ControlSource Temporal.Cant
ControlSource Temporal.ArtDet KeyboardHighValue 99Name CmbDescripcion KeyboardLowValue 1
Combo1 RowSourceType 6. Campos Spinner1 Name SpnCantidadRowSource Articulo.ArtDet Style 2. Lista DesplegableStyle 2. Lista Desplegable SpinnerHighValue 99Value 1 SpinnerLowValue 1
Value 1
Guis del Usuario Revista Compus Prácticas FoxPro
Más propiedadesNota: Caption de Labels ver el Grafico
Diseño en tiempo de Ejecución:
Digitaremos los siguientes códigos, según como se indican a continuación
Objeto: Formulario Principal (Form1) Evento Init
Public srecset multilock onset talk offset safety offset exclusive on
SELECT GUIAENC = cursorsetprop("buffering",3)set order to tag Nguiago bottomthisform.txtnguia.value = right("00000"+alltrim(str(val(nguia)+1)),6)append blankreplace nguia with thisform.txtnguia.value
Select temporaldele allset dele onappend blankreplace nguia with thisform.txtnguia.valuesrec=recno()thisform.grdDetalle.refreshthisform.txttotal.value=0
Evento Destroy SELECT GUIAENC =Tablerevert (.t.)SELECT TEMPORAL
Objeto: Cmbdescripcion Evento: Click If len(allt(thisform.grddetalle.coldescripcion.cmbdescripcion.value))>0
thisform.grddetalle.colcantidad.spncantidad.setfocuselse
thisform.grddetalle.coldescripcion.cmbdescripcion.setfocusendifthisform.refresh
Prof. José de La Rosa Página 49
Objeto: Propiedad Valor Objeto: Propiedad Valor
Command1 Caption \<Nuevo Command3 Caption \<GuardarName cmdNuevo Name cmdGuardar
Command2 Caption \<Agregar Command4 Caption \<SalirName cmdAgregar Name cmdSalir
Command2 Caption \<Agregar Command4 Caption \<Salir
Text1 Name txtNguia Text2 Name txtSubTotal
Guis del Usuario Revista Compus Prácticas FoxPro
Evento: Interactivechange SELECT temporalgo srecreplace artcod with articulo.artcodreplace preuni with articulo.artprereplace subtotal with thisform.grddetalle.colcantidad.spncantidad.value*preunisum subtotal to ntotalgo srecthisform.txttotal.value=ntotalthisform.grddetalle.colcantidad.spncantidad.value=1thisform.refresh
Evento: LostFocus
if len(allt(thisform.grddetalle.coldescripcion.cmbdescripcion.value))>0thisform.grddetalle.colcantidad.spncantidad.setfocus
elsethisform.grddetalle.coldescripcion.cmbdescripcion.setfocus
endifthisform.refresh
Objeto: spnCantidad Evento: InteractiveChange select temporalreplace subtot with thisform.grddetalle.colcantidad.spncantidad.value*preuninrec=recno()sum subtotal to ntotalgo nrecthisform.txttotal.value=ntotalthisform.refresh
Evento: LostFocus
thisform.grddetalle.coldescripcion.cmbdescripcion.setfocus
Objeto: cmbCliente Evento: Click SELECT GUIAENCreplace cliecod with cliente.cliecodthisform.grddetalle.coldescripcion.cmbdescripcion.setfocusTHISFORM.REFRESH
Objeto: cmdAgregar Evento: Click public srecSELECT TEMPORALif len(allt(artdet))>0
append blanksrec=recno()thisform.grddetalle.colcantidad.spncantidad.value=1
endifreplace nguia with thisform.txtnguia.valuethisform.grddetalle.coldescripcion.cmbdescripcion.setfocusthisform.refresh
Prof. José de La Rosa Página 50
Guis del Usuario Revista Compus Prácticas FoxPro
Objeto: cmdNuevo Evento: Click Public srecselect temporaldele allset dele onappend blankreplace nguia with thisform.txtnguia.valuesrec=recno()thisform.grddetalle.refreshthisform.txttotal.value=0thisform.refresh
Objeto: cmdGuardar Evento: Click SELECT GUIAENCreplace igv with thisform.txttotal.value*0.18replace total with thisform.txttotal.value=tableupdate(.t.)
SELECT TEMPORAL Scan
insert into guiadet(nguia,artcod,artdet,preuni,cant,subtotal);values(temporal.nguia,temporal.artcod,temporal.artdet,;
temporal.preuni,temporal.cant,temporal.subtotal) EndScan
SELECT GUIAENCset order to tag Nguiago bottomthisform.txtnguia.value=right("00000"+alltrim(str(val(nguia)+1)),6)
Objeto: cmdSalir Evento: Click SELECT GUIAENC=tablerevert(.t.)SELECT TEMPORALrelease thisform
Guardar y Probar la Ejecución.Realizar los cambios respectivos, hasta presentar similar al presente modelo.
Queda para el usuario hacer los últimos toques, para que resulte un buen diseño.
Prof. José de La Rosa Página 51