Manual Teórico Práctico de Visual Foxpro 6.0 Indice
Manual Teórico Práctico de Visual Foxpro 6.0 Indice
Manual Teórico Práctico de Visual Foxpro 6.0 Indice
com
Indice
1. Introducción
2. Bases de datos.
3. Programación.
4. Formularios
5. Informes
1. Introducción
En este manual 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 mas fácil de entender tanto para programadores principiantes como
programadores expertos.
2. Bases de datos.
Introducción
En este manual mostraremos lo básico pero también puedes consultar algún libro de Visual
FoxPro pues todo será para tu desarrollo, en las bibliotecas o en las librerías. FoxPro es un
lenguaje de mucha rapidez, esto lo convierte en un lenguaje de los más rápidos en el mercado,
FoxPro es también uno de los lenguajes de programación que contiene mucha potencia en el
manejo de las bases de datos.
Conceptos Básicos
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
------------------------------------------------------------------------------
Los campos son los que están en vertical y los registros llamados también datos, son los que
están en horizontal.
Componentes de Interfaz
Ventana Código: para desplegar código asociado a varios eventos en los formularios y
controles. Cuando un evento se dispara el código se ejecuta.
Generadores
Los generadores son entornos de trabajo en los que se construyen componentes de una
aplicación de FoxPro.
Generador de Bases de Datos Para organizar los datos en tablas y documentar las relaciones
entre tablas.
Asistentes
Son conjunto de cuadro de diálogos que te ayudan paso a paso a crear una determinada
aplicación, por ejemplo un formulario, etc.
Asistente para formularios: Construye "Pantallas instantáneas" con la estructura de las tablas
basándose en clases prediseñadas, incluidos efectos especiales en las pantallas y botones de
navegación ínter construidos.
Asistente para informes: Diseña informes, sencillos o complejos, utilizando un poco más que la
estructura de las tablas.
Barras de Herramientas
El propósito de que hayan estas barras es para hacerte un poco más fácil el trabajo, es decir
que el uso que le dará a la ventana de comandos será un poquito reducido.
Paleta de colores creo que te imaginas que es la barra de los colores en función RGB. Bueno
RGB significa (Rojo, Verde y Azul)
Generador de bases de datos en esta barra se manejan el entorno de datos, iconos para: crear,
agregar, y quitar una tabla así, como también modificar, vista remota o local, examinar una
tabla o editar procedimientos almacenados en el contenedor de la base de datos.
Generador de formularios esta barra te permite el paso rápido de uno a otro entre varios
elementos usados en el diseño de pantallas: el entorno de los datos, la ventana propiedades, la
ventana código la barra Controles de formularios, la paleta de colores, la barra de
herramientas. Distribución, entre otros.
Presentación Preliminar para que una vez diseñado un informe puedas apreciarlo como te
quedará y si no te gusta pues lo podrás modificar.
Estándar Este lo verás cuando inicies FoxPro, proporciona acceso al generador de formularios
y al Generador de informes, a bases de datos de impresión consultan tablas, conexiones,
vistas, etiquetas, programas, clases, archivos de texto y menús.
Administrador de Proyectos
Estos proyectos están integrados por el Administrador de proyectos, quien mantiene la pista de
los componentes de la aplicación. Conforme se agregan componentes a un proyecto, (Estas
son las carpetas o nombre de los menús del Administrador) FoxPro los colecta bajo alguno de
los siguientes encabezados:
Datos: las bases de datos (y todos los elementos que pueden describir), incluidas las tablas,
vistas locales y remotas, conexiones y procedimientos almacenados, así como tablas libres y
consultas.
Código: los archivos con extensión .PRG que contienen código que no está asociado con un
formulario, así como bibliotecas API y archivos llamados por la aplicación.
La barra de herramientas
En FoxPro hay muchos botones, estos botones pertenecen a la barra de herramientas de VFP.
También existen otras barras de herramientas. Se hace clic en el menú Ver, aparece una sola
opción de barras de herramientas. Sólo haz clic en la barra que quieres activar y aparecerá al
igual que la estándar. Algunas de estas barras ya las vimos anteriormente, ¿recuerdas?.
Estructura de un .BDF
Los datos en FoxPro se almacenan en forma de tablas, estas tablas son las bases de datos
pues la extensión de estas bases de datos es .DBF aunque también hay otras que se verá más
adelante. Los DBF comienzan con una breve descripción de los datos que están en la tabla.
Para ingresar a Visual FoxPro tienes que presionar el botón de inicio / todos los programas /
Microsoft Visual Studio 6.0 /Microsoft Visual FoxPro 6.0 (versión windows XP).
inicio / programas / Microsoft Visual Studio 6.0 /Microsoft Visual FoxPro 6.0 (versión windows
estándar).
Los anteriores son comandos los cuales se pueden modificar utilizando los comandos que
inician con la instrucción SET desde la ventana de comandos, por ej:
Por ejemplo si los archivos que se van a utilizar se encuentran en el directorio C:\programas\
transmisión\datos, escribiremos el comando SET de la siguiente forma:
SET DATE
SET SYSMENU
Creación de tablas
Diseñador de tablas
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:
Flotante: Este no lo utilizaremos en este manual pues sólo sirve por compatibilidad con dBASE
V, es equivalente al formato numérico.
Lógico: Éste, ya sea verdadero o falso, es representado por T o F, para verdadero o falso
respectivamente.
General: Éstos también son campos memos, excepto que usualmente almacenan otros tipos
de objetos además de texto como gráficos.
Para abrir un DBF en el área de trabajo 1 cuando ninguna otra tabla está abierta, teclee en la
ventana de comando (ventanita pequeña que aparece generalmente al lado izquierdo):
Nota: Un área de trabajo es un espacio de memoria reservado para que allí se manipulen los
datos de la tabla.
Puede especificar: USE nombre de la tabla IN 3 pero recuerda para abrir o cerrar una tabla
tiene que estar ya creada. Para reservar un área de trabajo puedes digitar:
Este comando también puede ser SELECT nombre de la tabla / alias SELECT es para
seleccionar la tabla a trabajar (abrir, cerrar, modificar, etc.) USE nombre de la tabla (y se abrirá
el cuadro de dialogo abrir, pues FoxPro no sabe que tabla abrir debes abrir la que necesites).
SELECT A
USE tabla1
SELECT B
USE tabla2
SELECT C
USE tabla3 …
Y cuando quiera utilizar una de las tablas solo tienes que llamar el área de trabajo como por
ejemplo si vas ha utilizar la tabla2 escribe en la ventana de comandos o dentro de un programa
SELECT B.
Para cerrar tablas o una sesión de tablas abiertas puedes escribir los siguientes comandos:
Diseño de tablas
Primero hay que crear un directorio para almacenar tu trabajo (aunque esto no es necesario
pero si vas a trabajar con un disco flexible o en un directorio distinto al que trae designado
FoxPro tienes que hacerlo), para ello digita: MD ruta luego para que FoxPro trabaje con este
directorio debes digitar:
SET DEFA TO ruta (nombre del directorio que se supone ya creaste con el comando md).
2. haz clic en nuevo (new) luego selecciona tabla (table) luego digite el nombre de la tabla.
Después tendrás que darle un nombre a la tabla y lo guardas aparecerá el generador de tablas
con las carpetas tabla e índice (si es VFP 6.0 estará también campos).
Ahora puedes introducir el nombre, el tipo y la longitud del campo en el orden correcto.
Por ejemplo:
Nombre Carácter 40
Dirección Carácter 40
Ciudad Carácter 22
No oprimas enter porque el programa entenderá que la tabla ya esta terminada si quieres pasar
a digitar el siguiente campo debe moverte con la tecla tab NO CON ENTER. Enseguida
introduce datos a tu tabla. Si digitas LIST STRUCTURE (en la ventana de comandos), verás la
estructura de tu tabla puedes borrar los campos si digitas DELETE NEXT numero de campo (2
por ejemplo), y puedes recuperarlo si digitas RECALL NEXT 2 y regresará.
Ahora puedes digitar BROWSE y veras los datos que introdujiste la tabla después de creada,
Si digitas SET SCAPE ON podrás detener algunos procesos cuando lo desees como el
comando LIST pero aquí no será necesario pues se introducirán pocos datos en la tabla. tú
puedes digitar LIST y ver los datos en forma rápida la sintaxis de LIST es:
FIELD digitas el nombre del campo o campos a visualizar. TO PRINT en para enviar la salida a
la impresora. FOR seguido de una expresión de dominio, lista sólo aquellos registros que
coincidan con la expresión. ejemplo LIST FOR ciudad ="San Salvador" el WHILE seria LIST
WHILE ciudad = "San Salvador", el WHILE se utiliza para optimizar muchos aspectos del
desempeño de FoxPro. OFF desactiva la opción de numeración de registros digítalos y notarás
la diferencia.
Sum si digitas SUM saldo te sumará todos los saldos (registros) almacenados en este campo.
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:
* Prueba estos comandos primero digita uno de ellos y luego digita list y verás los resultados.
Practica 1
Según la siguiente hoja, evalua los datos que pudan servir para realizar una tabla de Inventario,
construye la estructura, tomando en cuenta algunos datos que puedan enriquecer la tabla.
Precio Precio
igo
1 Case Mini tower Deluxe ADS 300 105.00 126.00 Distribuidora SalCom
Utiliza los comandos Use, Browse, List y Display, según te indique el instructor y anota en tu
cuaderno lo que pasa.
Manipulación de registros
Puedes utilizar diferentes tipos de comando para manipular los datos de tu tabla, estos
comandos pueden utilizarse desde su modo más simple hasta su forma compuesta utilizando
expresiones de dominio, por ejemplo:
LIST FOR país = "ES" && lista los registro que país = "ES"
DISPLAY ALL
DISPLAY RECORD 5
GOTO 17
GO TOP
GO BOTTOM
SKIP -3
DELETE RECORD 6
GO 6
RECALL
PACK
ZAP
Mencionaremos otros comandos que son de gran ayuda al momento de manipular los datos:
APPEND FROM Agrega registros desde otra tabla al final de los registros de la
tabla seleccionada
Otro tipo de comandos útiles para la manipulación de tablas y registros son las FUNCIONES,
las cuales se dividen en:
a. Cadenas o manejo de
caracteres: este grupo de
funciones gestiona el manejo
de caracteres.
b. Matemáticas: permiten
efectauar operaciones con
valores numéricos.
c. Manejo de fechas y hora: se
encarga de gesstionar las
variables de tipo fecha.
d. Lógicas: Se encargan de
efectuar operaciones de tipo
lógico.
e. Funciones de converción de
tipos: conviertes variables de
un tipo a otro.
Constante: Son valores predefinidos que no cambian nunca por ejemplo: valor1=15478,
cadena="abcd".
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
+, - Suma y resta
Operadores relacionales
= 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
cuenta = 0
* Asignación de datos
? 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
SINTAXIS
[ASCENDING | DESCENDING]
[<alcances>]
EJEMPLO:
USE persona
Persona persona_ordenada
Comando INDEX ON
SINTAXIS
EJEMPLO:
USE persona
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.
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.
Practica 2
Ejercicio:
Crea una tabla que guarde los datos de tus compañeros y pon un índice por el campo que
creas conveniente y práctica lo anterior.
También puedes indexar una tabla, desde el generador de tablas de FoxPro marcando la
casilla que se muestra en la figura:
Primero tienes que seleccionar el campo que servirá como índice, luego selecciona la ficha de
modo que te aparezca la siguiente pantalla:
Tienes que elegir el tipo de de índice el cual le indicara a la tabla que tipo de índice tiene. Los
tipos de índices son los siguientes:
Principal: No admites claves duplicadas, actúa como referente a un registro de una tabla, de
forma que no puede haber dos registros con la misma clave.
Candidato: Este índice tampoco admite claves duplicadas. Puede haber más de uno por tabla.
Único: En este índice sólo se guardan aquellos valores que sean distintos entre sí, pero sí
admite registros con valores duplicados.
Relación de Tablas
Normalización
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
Para relacionar tablas tienes que tener do o más tablas abiertas en distintas áreas de trabajo y
que por lo menos tengan un campo en común.
SELECT 1
SELECT 2
SELECT 1
Almacena información sobre tablas, índices y otros temas relacionados. Un contenedor de base
de datos en verdad es una tabla de FoxPro con la extensión .DBC. Sus campos memo
relacionados están en una tabla del mismo nombre con la extensión .DCT.
Práctica 3.
Después de que hayas relacionado la estructura de tu base de datos, has la siguiente prueba
para verificar si la base de datos esta bien construida.
b. Para verificar la relación de los datos deberás realizar los siguientes pasos:
1. Elige el menú Ventana - Sesión de datos.
2. Te aparece la ventana de sesión de datos, luego elige el botón Abrir y
selecciona una de las tablas.
3. Has lo mismo con las otras tablas.
4. Ya abiertas las tablas, selecciona la tabla de proveedores y has clic en
el botón Relaciones, luego selecciona la tabla Marca y elige el campo
con el cual armaras tu relación.
5. Si te aparece el cuadro expresiones, selecciona el campo de la tabla
de la cual armaras la relación.
6. Luego has clic otra vez en la tabla proveedores y da clic en el botón
Relaciones.
7. Repite los pasos anteriores solo que esta vez elige la tabla de
producto, de modo que al finalizar te quede de la siguiente forma.
8. Ahora selecciona el botón Examinar para cada tabla y navega en la
tabla proveedores, los datos de las otras tablas aparecerán
relacionados con ella, de lo contrario revisa tu relación.
9. Prueba con la relación Producto - Marca - Proveedores, Marca -
Productos - Proveedores.
3. Programación.
Conceptos.
DO… ENDDO
IF… ENDIF
SCAN..ENDSCAN
DOCASE...ENDCASE
WITH…ENDWITH
Una de las técnicas más útiles en la programación son los encabezados de programa, por
ejemplo:
* Fecha : 12/12/2001
Comandos de Asignación
Para crear variables de memoria y darles valores al mismo tiempo, escriba lo siguiente:
X=3
PUBLIC a, b, c
PRIVATE x, y, z
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.
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
ENDSCAN
SELECT clientes
GO TOP
SKIP
ENNDO
IF I >10
ENDIF
L=1
DO WHILE L=LEN(nombrelista)
IF [CRUZ]$ nombrelista(L)
SEEK nombrelista(L)
IF nombre= [John]
DO prgnombre
LOOP
ENDIF
ENDIF
ENDDO
Tipos de comandos
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 ( ).
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)
Practica 4
1. Desplegar el valor a cobrar por llamadas telefónicas locales, si se cobra $0.09 cada
llamada, haciendo hasta 100 llamadas, $0.08 por 200, $0.07 por 300 y $0.06 por más
de trescientos, teniendo en cuenta también que por llamadas internacionales la tarifa
es fija de $1.93 si son diurnas y $1.75 si son nocturnas, cada una de estas tarifas esta
medida en minutos.
2. Calcular la utilidad que un trabajador recibe en el reparto de utilidades si éste se le
asigna como porcentaje de un salario mensual que depende de su antigüedad en la
empresa de acuerdo con esta tabla:
Tiempo Utilidad
Menos de un año 5%
3. Determinar la cantidad de dinero que recibirá un trabajador por concepto de las horas
trabajadas en una empresa, sabiendo que cuando las horas extras de trabajo exceden
de 40, el resto se considera horas extras y que éstas se pagan al doble de una hora
normal cuando no exceden de 8; si las horas extras exceden de 8 se pagan al doble
más el 70% de la hora normal, las horas extras no exceden de 55.
4. Realice un programa en el cual pida el nombre completo de una persona y este indique
cuantas vocales y cuantas consonantes tiene.
5. Realice un programa o diferentes programas que permita un mantenimiento de una
tabla de direcciones.
La POO intenta ser un mejor sistema para el desarrollo de aplicaciones. Como toda técnica de
programación, si se hace mal puede ser desastrosa.
Una de las mejoras que se tiene con la POO es el permitir afrontar programas más complejos y
de mayor tamaño con menor esfuerzo. El hecho de trabajar con pequeños elementos bien
definidos, como son los objetos, nos permite aislar cada componente de la aplicación, del resto
y de esa forma aprovechar en mayor medida nuestro esfuerzo.
Elementos de la POO
Clase y objeto: la clase es la generalización de los objetos y los objetos son la concreción de la
clase. Como ejemplo podemos observar los botones de un entorno gráfico, donde definimos
que la clase botón es la generalización de las propiedades y comportamientos de todos los
botones de los entorno gráficos.
Definir una clase: las clases son la descripción de los elementos comunes de los objetos que
generalizan. Así las clases se definen y pueden ser usadas para crear innumerables objetos de
este tipo. Para definir una clase utilizaremos una sencilla sintaxis de VFP.
Para poder utilizar esta definición debemos incluirla en un fichero .PRG y cargado con SET
PROCEDURE TO o bien incluirla al final de nuestro fichero .PRG.
Crear un objeto: ya podemos crear objetos basado en esta clase, para ello utilizaremos la
siguiente expresión:
Variable1 = CREATEOBJECT("NombreClase")
Propiedades: Como hemos dicho, las propiedades son los datos que manejan las clases. Estas
propiedades se declaran en la definición de la clase y permanecen en todo momento asociados
a los objetos CREADOS bajo esa clase.
Métodos: el otro elemento característico de una clase son los métodos. Los métodos son
acciones que pueden realizar los objetos, es decir, son funciones o procedimientos asociados a
este tipo objeto.
Operador this: Cuado vamos a utilizar una propiedad o un método de la clase, debemos
anteponer al operador punto el operador THIS, para indicar que se trataran las propiedades del
objeto que recibe el mensaje, es decir, que ha sido invocado, y no para otro.
Las propiedades mantienen valores diferentes para cada uno de los objetos, pero los métodos
comparten su código entre todos los objetos de una clase. Un método varía en la medida que
las propiedades del objeto que lo llama son diferentes, por ello es tan importante el operador
THIS.
Ocultación: Una de las mejoras que implementa la POO, es la posibilidad de limitar el acceso a
determinadas propiedades o métodos. Con ello conseguimos que la utilización de la clase se
haga de forma ordenada.
Las propiedades o métodos protegidos sólo son utilizables desde los métodos pertenecientes a
esta clase y no pueden usarse directamente por otros programas.
Al igual que podemos proteger propiedades, podemos proteger métodos. De esta forma
podemos definir métodos que sólo sean usados por otros métodos de la clase y no puedan ser
invocados a partir de los objetos de esta clase. Para ello basta colocar la cláusula
PROTECTED antes de PROCEDURE.
Eventos: Existe una serie de métodos especiales, que normalmente no se ejecutan por ser
invocados de forma explícita, como los que hemos definido hasta ahora, sino que por
denominarse de una forma determinada son lanzados cuando "pasa algo", es decir, cuando se
produce un evento. Estos eventos pueden ser un clic, el movimiento del ratón, una pulsación de
tecla, etc.
Conclusiones
Ejemplo:
formu = CREATEOBJECT("Ejemplo")
formu.ADDOBJECT("boton","boton")
formu.SHOW
READ EVENT
MOVABLE=.F.
CLOSABLE=.F.
CAPTION="EJEMPLO DE POO"
AUTOCENTER=.T.
ENDDEFINE
VISIBLE=.T.
CAPTION="PRESIONE AQUI"
LEFT=125
TOP=65
HEIGHT=100
PROCEDURE CLICK
CLEAR EVENT
ENDIF
ENDDEFINE
4. Formularios
Conceptos
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.
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, así
como crear barras de herramientas propias mediante la clase de base ToolBar incluida con
Visual FoxPro.
Form
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 Uso
Init Se dispara a la hora que se inicializan todos los objetos del formulario
Load Se dispara antes que se inicialicen los objetos del formularios (antes
que el init)
Propiedad Uso
Los cuadros de texto sirven para capturar los datos de los campos.
Propiedades Uso
Botones de comando
Un 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 Uso
Propiedades Uso
ControlSource Es la variable o nombre del campo al cual hace referencia
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.
Un control ListBox muestra una lista de elementos entre los cuales el usuario puede
seleccionar uno o más. Si el número de elementos supera el número que puede mostrarse, se
agregará automáticamente una barra de desplazamiento al control ListBox.
Los 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.
Un cuadro combinado aúna las características de un cuadro de texto y un cuadro de lista. Este
control permite al usuario seleccionar opciones si escribe texto en el cuadro combinado o
selecciona un elemento de la lista.
A diferencia de otros controles que contienen un único valor, por ejemplo la propiedad Caption
de una etiqueta o la propiedad Text de un cuadro de texto, los cuadros de lista y los cuadros
combinados contienen múltiples valores o una colección de valores. Tienen métodos integrados
para agregar, quitar y recuperar valores de sus colecciones en tiempo de ejecución. Para
agregar varios elementos a un cuadro de lista llamado Lista1, el código sería como el siguiente:
Lista1.AddItem "París"
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 Uso
BoundTo Especifica si el valor de la lista esta determinado por los valores o por
la propiedad ListIndex
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 Uso
DeleteMark Permite registro para borrar (Aparece en la parte izquierda del Grid
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.
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.
Los diseñadores ActiveX son como los diseñadores de formularios en los siguientes aspectos:
o 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.
o 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.
o Puede personalizar una clase si agrega propiedades, métodos y eventos a los
proporcionados por el diseñador ActiveX.
o 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.
o 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.
o 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.
Práctica 5
La idea fundamental del trabajo con formularios es la combinación que estos hacen con las
bases de datos, para ello, un formulario se puede combinar desde una tabla, hasta, varias de
ellas.
Para lograr esta combinación los formularios hacen uso de los objetos, los cuales se asocian a
los datos, el objeto guarda la referencia a las tablas, y cuando el formulario se ejecuta, se abren
específicamente todas las tablas asociadas al entorno de datos.
El entorno de datos es donde se definen las tablas relacionadas y sus ordenes establecidos.
Para lograr un formulario final se hace necesario de conocer los siguientes elementos:
Práctica 6
Crea una carpeta llamada Sistema de clientes, dentro de ella crea otras subcarpetas y
nómbralas así: datos, formularios, gráficos e informes.
Ahora cada objeto que crees de este ejemplo aseguraté que lo guardas en el lugar indicado de
lo contrario no funcionará debidamente.
Crea el proyecto
Agrega tablas
Ahora agregaras las tablas correspondientes a la base de datos, selecciona Agregar nueva
tabla y adiciona cada tabla que a continuación te damos, ten cuidado de grabarlas con el
mismo nombre y con los nombres de los campos iguales.
Cuando a cabes de crear las tablas relaciona las tablas de modo que te queden de la siguiente
forma.
Diseño de formulario.
Ahora, haremos el diseño del formulario, puedes hacerlo de dos formas, la primera es abriendo
el entorno de datos y arrastrando los campos hasta el formulario, y la segunda colocando cada
uno de los objetos, luego tu cambias la propiedad ControlSource colocando el nombre del
campo al que hace referencia, el diseño del formulario puede ser el siguiente, pero tu puedes
hacer el tuyo.
Aseguraté que las tablas en el entorno de datos se encuentren bien relacionadas, es decir:
entre la relación Clientes – Departamento la propiedad del entorno de datos ChildAlias =
Departamento y ParentAlias = Clientes y entre la relación Departamento – Distribuidor las
propiedades serian ChildAlias = Distribuidor y ParentAlias = Departamento. Si tienes alguna
duda pregunta a tu instructor.
Cambia las propiedades que te son útiles, por ejemplo FontName, FontSize, BackColor y para
los cuadros de texto y cuadros de edición cambia la propiedad Enabled, esta servirá para no
poder escribir mientras no se le de la orden de agregar o modificar registros.
Haremos la barra de cursuras, para eso tu instructor te copiara los gráficos necesarios en tu
disco.
Botón primero:
GO TOP
THISFORM.REFRESH
Botón anterior:
IF .NOT. BOF()
SKIP -1
ELSE
GO BOTTOM
ENDIF
THISFORM.REFRESH
Botón Siguiente:
IF .NOT. EOF()
SKIP 1
ELSE
GO TOP
ENDIF
THISFORM.REFRESH
Botón último:
GO BOTTOM
THISFORM.REFRESH
Ahora inserta un botón para cerrar la ventana que estas programando, puedes hacerlo con
texto o con gráficos, programa lo siguiente:
THISFORM.RELEASE
Vamos a agregar un botón para que busque registros por medio del campo índice código del
cliente, para ello inserta un contenedor y dentro del un botón de comandos y un cuadro de
texto, modifica las propiedades necesarias de modo que te quede como el siguiente ejemplo:
buscar= 0
buscar=VAL(THISFORM.CONTAINER1.txtbuscar.VALUE)
IF !FOUND()
ntipodedialogo = 4 + 32 + 256
ctitulo = 'Mensaje'
* 4 = Botones Sí y No.
DO CASE
CASE nrespuesta = 6
THISFORM.CONTAINER1.txtbuscar.SETFOCUS()
CASE nrespuesta = 7
THISFORM.cmdsalir.SETFOCUS()
ENDCASE
ELSE
THISFORM.REFRESH
ENDIF
Luego, inserta dos botones más arriba de cmdagregar y cmdeditar, de modo que te quede de la
siguiente forma:
Cmdagregar
THISFORM.txtcod_cliente.ENABLED=.t.
THISFORM.txtnom_cliente.ENABLED=.t.
THISFORM.txtape_cliente.ENABLED=.t.
THISFORM.txtnom_negocio.ENABLED=.t.
THISFORM.edtdir_cliente.ENABLED=.t.
THISFORM.txtcod_dpto.ENABLED=.t.
THISFORM.txttele_cliente.ENABLED=.t.
THISFORM.txtfax_cliente.ENABLED=.t.
THISFORM.txtno_cuenta.ENABLED=.t.
THISFORM.commandgroup1.ENABLED=.f.
THISFORM.container1.ENABLED=.F.
THISFORM.commandgroup2.ENABLED=.F.
THISFORM.cmdsalir.ENABLED=.F.
THISFORM.cmdguardar.VISIBLE=.T.
GO BOTTOM
THISFORM.REFRESH
contador=THISFORM.txtcod_cliente.VALUE
APPEND BLANK
THISFORM.txtcod_cliente.value=contador+1
THISFORM.txtnom_cliente.SETFOCUS
THISFORM.REFRESH
Cmdguardar
ntipodedialogo = 4 + 32 + 256
ctitulo = 'Guardar'
* 4 = Botones Sí y No.
DO CASE
CASE nrespuesta = 6
THISFORM.REFRESH
CASE nrespuesta = 7
DELETE
PACK
ENDCASE
THISFORM.txtcod_cliente.ENABLED=.f.
THISFORM.txtnom_cliente.ENABLED=.f.
THISFORM.txtape_cliente.ENABLED=.f.
THISFORM.txtnom_negocio.ENABLED=.f.
THISFORM.edtdir_cliente.ENABLED=.f.
THISFORM.txtcod_dpto.ENABLED=.f.
THISFORM.txttele_cliente.ENABLED=.f.
THISFORM.txtfax_cliente.ENABLED=.f.
THISFORM.txtno_cuenta.ENABLED=.f.
THISFORM.commandgroup1.ENABLED=.t.
THISFORM.container1.ENABLED=.t.
THISFORM.commandgroup2.ENABLED=.t.
THISFORM.cmdsalir.ENABLED=.t.
THISFORM.cmdguardar.VISIBLE=.f.
THISFORM.REFRESH
Cmdborrar
DO CASE
CASE mensaje = 6
DELETE
PACK
GO TOP
THISFORM.REFRESH
CASE mensaje = 7
THISFORM.REFRESH
ENDCASE
Cmdeditar
THISFORM.txtnom_cliente.ENABLED=.t.
THISFORM.txtape_cliente.ENABLED=.t.
THISFORM.txtnom_negocio.ENABLED=.t.
THISFORM.edtdir_cliente.ENABLED=.t.
THISFORM.txtcod_dpto.ENABLED=.t.
THISFORM.txttele_cliente.ENABLED=.t.
THISFORM.txtfax_cliente.ENABLED=.t.
THISFORM.txtno_cuenta.ENABLED=.t.
THISFORM.commandgroup1.ENABLED=.f.
THISFORM.container1.ENABLED=.F.
THISFORM.commandgroup2.ENABLED=.F.
THISFORM.cmdsalir.ENABLED=.F.
THISFORM.cmdguardare.VISIBLE=.T.
THISFORM.txtnom_cliente.SETFOCUS
THISFORM.REFRESH
Cmdgrabare
THISFORM.txtcod_cliente.ENABLED=.f.
THISFORM.txtnom_cliente.ENABLED=.f.
THISFORM.txtape_cliente.ENABLED=.f.
THISFORM.txtnom_negocio.ENABLED=.f.
THISFORM.edtdir_cliente.ENABLED=.f.
THISFORM.txtcod_dpto.ENABLED=.f.
THISFORM.txttele_cliente.ENABLED=.f.
THISFORM.txtfax_cliente.ENABLED=.f.
THISFORM.txtno_cuenta.ENABLED=.f.
THISFORM.commandgroup1.ENABLED=.t.
THISFORM.container1.ENABLED=.t.
THISFORM.commandgroup2.ENABLED=.t.
THISFORM.cmdsalir.ENABLED=.t.
THISFORM.cmdguardare.VISIBLE=.f.
THISFORM.REFRESH
Este formulario será pequeño, trata que en la posición que lo diseñes sea donde en el
formulario clientes vaya el departamento del cliente, agrega un control Grid (Cuadrícula), has
clic derecho sobre ella y selecciona la opción Generador.
Selecciona la tabla Departamento, selecciona los campos, luego pasa a la ficha estilo y escoge
el estilo que quieras, selecciona la ficha distribución, escribe los títulos que allí te piden y por
último la ficha relación, donde escribirás ninguna, por último da clic ha aceptar y
automáticamente se te generará un grid con sus especificaciones.
PUBLIC CODEPAR
CODEPAR=0
contador=0
THIS.VALUE=CODEPAR
THISFORM.REFRESH
5. Informes
Para crear rápidamente un diseño sencillo de informe, 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.
Opciones de la ventana
Bandas
Pie de grupo Una vez por grupo Valores calculados para grupos de datos
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.
Rotce hHernandez
rotcehHernandez@terra.com