Tesis - Universidad de Colima

Anuncio
Universidad de Colima
Maestría en Ciencias Computacionales
TUTORIAL DE VISUAL FOXPRO
Tesis que para obtener el grado
de Maestra en Ciencias Computacionales
Presenta
L. 1. Katiuzka Flores Guerrero
Asesor: M.C. Ricardo Fuentes Covarrubias
Coquimatlan, Col. 29 de Enero del 2000
Facultad de Ingeniería Mec6nicu ~7 Eléctrica
EXPEDIENTE 266
NUM. 93-5 13 1
C. KATIUZKA FLORES GUERRERO
LOPEZ COTILLA # 130
C.P. 49000
CIUDAD GUZMAN, JAL.
Informo a usted que ha sido aprobado como tema de titulación para obtener
el grado de MAESTRO EN CIENCIAS COMPUTACIONALES.
El solicitado por usted bajo él título TUTORIAL
DE VISUAL FOXPRO
“ VERSION 6.0 “.
Desarrollado bajo los siguientes puntos:
1
II
III
IV
V
VI
VII
VIII
........-
ADMINISTRADOR DE PROYECTOS
BASES DE DATOS
PROGRAMACION ORIENTADA A OBJETOS
CLASES BASE DE VISUAL FOXPRO
PROGRAMACION ORIENTADA A FORMULARIOS
INFORMES
INTERNET & VISUAL FOXPRO
CONCLUSIONES
BIBLIOGRAFIA
Al mismo tiempo informo a usted que ha sido designado como asesor de
titulación al C. M.C. RICARDO FUENTES COVARRUBIAS.
deber&
En cada uno de los ejemplares de titulación que presente para examen,
aparecer en primer término copia del
c.c.p. EXPEDIENTE ALUMNA
AGFC/merv*
Km
9 Carretera Colima-Coqoimatlán, A.P. 299 / Ccdima.
México
/ TelBfnnn
Y F~Y ni 1V.7\
? ni
7n
H. CONSEJO TECNICO DEL POSGRADO
DE LA FACULTAD DE INGENIERIA MECANICA Y ELECTRICA
PRESENTE.
Por medio de este conducto informo que la C. KATIUZKA
FLORES
GUERRERO
terminó su período de revisión de tesis:
TUTORIAL DE VISUAL FOXPRO “ VERSION 6.0 “
Cuyo contenido es el siguiente :
1
II
III
IV
V
VI
VII
VIII
........-
ADMINISTRADOR DE PROYECTOS
BASES DE DATOS
PROGRAMACION ORIENTADA A OBJETOS
CLASES BASE DE VISUAL FOXPRO
PROGRAMACION ORIENTADA A FORMULARIOS
INFORMES
INTERNET & VISUAL FOXPRO
CONCLUSIONES
BIBLIOGRAFIA
El cual cumple con los requisitos necesarios para su aprobación, por lo cual
lo autorizo para su impresión.
ATENTAME>TE
Coquimatlán, Col., 12 $,e’Feb‘rero del 2000
HC
M.C.ARfOlOi$+BI A
c.c.p. EXPEDIENTE
RFC/merv*
S
Exp.No.:
0038
Fecha:
12-02-00
Acta No.: 12
C. KATIUZKA FLORES GUERRERO
Domicilio: LOPEZ COTILLA # 130
C.P.: 49000
Localidad: CIUDAD GUZMAN, JAL.
En cumplimiento al artículo: 13 y 14 del reglamento de titulación, al artículo 40, Inciso A del
reglamento de estudios de Posgrado vigente y al artículo: 46 de las normas complementarias al reglamento de Posgrado,
correspondientes al Posgrado de la Facultad de Ingeniería Mecánica y Eléctrica. Informamos a usted que ha sido
autorizado por este Consejo Técnico del Posgrado su tema de Tesis para obtener el grado de Maestro
en Ciencias Computacionales titulado: TUTORIAL DE VISUAL FOXPRO “ VERSION 6.0 “.
para ser desarrollado bajo los siguientes puntos:
1
II
III
IV
V
VI
VII
VIII
la
C.
........-
ADMINISTRADOR DE PROYECTOS
BASES DE DATOS
PROGRAMACION ORIENTADA A OBJETOS
CLASES BASE DE VISUAL FOXPRO
PROGRAMACION ORIENTADA A FORMULARIOS
INFORMES
INTERNET & VISUAL FOXPRO
CONCLUSIONES
BIBLIOGRAFIA
Así mismo hacemos de su conocimiento que de acuerdo con Ia línea de investigación en
cual
proyecto ha
sido
autorizado
como
asesor
de
tesis
al
M.C. R:CA&:%NT;: COVARRUBIAS
A partir de la fecha de aprobación tendrá como plazo un ano para presentar su examen de grado, en caso
contrario tendrá usted derecho a una prórroga única de seis meses so pena de perder el registro de su proyecto.
Una vez concluidos 10s trámites de revision de su documento de tesis e integrado su expediente de titulación
deberá recoger el oficio que acompahará a el visto bueno de su asesor de tesis, 10s cuales encabezarán cada uno de los
ejemplares de su tesis.
Atentamente
de la Facultad de
la Universidad de
I
NTES
M.C. VICTOR HUGO CASTILLO TOPETE
COVARRUBIAS
M.C. RODOLFO GALLARDO ROSALES
Resumen
El presente trabajo abarca los aspectos más importantes de Visual FoxPro.
Con el Administrador de proyectos desarrollamos rápidamente nuestra
aplicación, por medio de un desarrollo libre o por medio de un asistente a Bases de
Datos, Informes, Formularios, Etiquetas, Clases, Menús, etc.
Por otra parte
nos ofrece asistentes para la elaboración de discos de
distribución de las aplicaciones.
En el diseñador de’ Bases de Datos podemos agregar triggers a nivel registro,
agregar relaciones permanentes, asociar campos a mascaras y a clases.
Con el diseñador de clases, las clases base, la clase custom y el hecho de
que Visual FoxPro es un lenguaje orientado a objetos, nos da la facilidad de hacer un
código reutilizable.
VFP posee asistentes que nos guiarán en el desarrollo de formularios,
informes, etiquetas, etc. Una importante novedad es que incorpora la posibilidad de
elaboración de aplicaciones para el WEB.
Summary
This work show us the most important topics of Visual FoxPro.
With the Project Manager develops quickly our application , we can create with
wizards or with out them Reports, Forms, Labe@ Classes, Menus, etc.
Also we can use the wizards to do diskettes of installation.
The designer of Data Base we can add triggers and relationship and associate
fields with masks and classes.
With de designer of classes, classes base, custom and the fact of Visual
FoxPro is a language OOP we can do code recyclable.
One notice important, we can create pages Web with our applications.
INDICE
I Administrador de Proyectos.. ...........................................................................
1
1.1. Componentes del Administrador de Proyectos.. .....................................
.3
1.2 Opciones del Proyecto.. ..........................................................................
.3
1.2.1 Página de proyectos.. ......................................................................
.3
1.2.2 Pagina Ver.. .....................................................................................
.5
1.3 Generación de la aplicación final .............................................................
.7
1.4 Versión.. ...................................................................................................
.9
1.5 Información del proyecto ...........................................................................
10
19
ll Bases de Datos ..............................................................................................
.
2.1 Tablas .......................................................................................................
21
2.2 Indices .......................................................................................................
24
2.3 Validaciones a nivel registro .....................................................................
26
2.4 Relaciones entre tablas ............................................................................
27
2.4.1 Relaciones permanentes ..................................................................
27
2.4.2 Relaciones temporales .....................................................................
28
2.5 Tablas Libres ............................................................................................
III Programación Orientada a Objetos ..............................................................
31
33
3.1 Elementos de la programación orientada a objetos.. ...............................
.33
3.2 Generación De Clase Visuales ................................................................
.35
3.2.1 Diseñador de clases ..........................................................................
3.2.2 Propiedades .....................................................................................
a7
37
3.2.3 Métodos ...........................................................................................
39
3.2.4 Archivos .H ......................................................................................
.39
3.2.5 Documentación de la clase ..............................................................
40
3.2.6 Modificación de una clase ................................................................
41
3.2.7 Instanciando objetos .........................................................................
41
3.2.8 Operadores de referencia .................................................................
42
3.2.9 Ejemplo de la creación de un clase con propiedades y métodos.. . ..4 2
42
3.2.9.1 Definir una clase ....................................................................
3.2.9.2 Crear un objeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.2.9.3 Ámbito de un objeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
3.2.9.4 Mensajes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.2.9.5 Ocultación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
3.2.9.6 Poliformismo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4. .7. . .
3.2.9.7 Objetos como propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 8
3.2.9.8 Herencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
3.2.9.9 Sobreescribir métodos o propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
3.2.9.10 El operador :: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5. 1. . .
IV Clases Base De Visual Foxpro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3
4.1 Propiedades comunes a varias clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.2 Eventos comunes aavarias clases. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6. .5.
4.2.1 Creación y destrucción de objetos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6. .5
4.2.2 Carga y descarga de formularios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 5
4.2.3 Control de teclado.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
., . . . . . . . . . . .6. .5
4.2.4 Control de ratón. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
66
4.2.5 Control del foco.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6. .6
4.2.6 Modificaciones. . , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
66
4.2.7Gestión de errores. . . . . . . . . . . . . . . . . . ., . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ,. . . . . . . . . . . . . . . 6. 7.,. . . . .
4.3 Métodos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 7
4.3.1 Manejo de objetos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 7
4.3.2 Métodos gráficos . . , . . . . . . . . . . . . . . , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
67
4.3.3 Manejo d e listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
:..
4.3.4 Métodos de entorno de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6. 9
4.3.5 Métodos de cuadrículas.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
69
4.3.6 Mover y posicionar objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
69
4.3.7 Objetos OLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
,. . . . . . . . . . . . . . . . . . . . . . . . ,. . . . 6 9
4.4 Clases Base de Visual FoxPro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 9
4.4.1 Conjunto de formularios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 0
4.4.2 Formulario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
70
4.4.3 Contenedor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7. 1
4.4.4 Marcos de páginas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
71
4.4.5 Grupo de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
71
4.4.6 Grupo de opciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.4.7 Etiquetas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
72
4.4.8 Cuadro de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
75
4.4.9 Cuadro de edición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
79
4.4.10 Botones de comando ,.......,.......,............,.............................................
81
4.4.11 Grupos de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
83
4.4.12 Casilla de verificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.4.13 Cuadro de lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
85
4.4.14 Cuadro combinado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
95
4.4.15 Grupo de opciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
4.4.16 Control numérico . . . . . ...*..................................*......................................
98
4.4.17 Cuadrículas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
100
4.4.18 Imagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
106
4.4.19 Cronómetro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . , . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.107
4.4.20 Marcos de página . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
107
4.4.21 Control contenedor OLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
109
4.4.22 Control OLE independiente... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
4.4.23 Líneas y formas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
111
V Programación orientada a formularios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
112
5.1 Apariencia del diseñador de formularios... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...:. . . . .112
5.2 Opciones del formulario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
114
5.3 La ventana propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
5.4 Tipos de ventanas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
117
5.5 Controles de la barra de títulos ,............,................................,..................
118
5.6 Almacenamiento en buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ll 9
5.7 Sesión de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Il9
5.8 Apariencia del formulario . . . . . . . . . . . . . . . . . . . . . . , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.120
5.9 Otras propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.10 Eventos.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.120
.12 1
5.11 Entorno de datos.. ..................................................................................
123
5.11 .l Propiedades del entorno de datos.. ...............................................
124
5.1 1.2 Métodos .........................................................................................
124
5.11.3 Cursores ........................................................................................
124
5.12 Formulario rápido ...................................................................................
126
VI Informes .......................................................................................................
129
6.1 Diseñador de informes.. ...........................................................................
129
6.2 Selección de datos ...................................................................................
131
6.3 Sección detalle .........................................................................................
132
6.3.1 Propiedades de las sección detalle .................................................
133
6.3.2 Controles insertables .......................................................................
134
6.3.2.1 Etiquetas .................................................................................
134
6.3.2.2 Campos.. .................................................................................
135
6.3.2.3 Imágenes y controles OLE dependientes.. ..............................
140
6.4 Menú Formato ..........................................................................................
141
6.5 Secciones de encabezado y pie de página ..............................................
142
6.6 Secciones de título y resumen .................................................................
142
6.7 Variables en los informes.. .......................................................................
143
6.8 Impresión condicional ..............................................................................
144
6.9 Creación de grupos.. ................................................................................
145
6.10 Columnas en informes ...........................................................................
147
6.11 Impresión de un informe ........................................................................
147
6.12 Vista preliminar ......................................................................................
147
VII Internet Wisual FoxPro.. ............................................................................
148
7.1 Acceso a paginas Internet desde VisualFoxPro.. .....................................
148
7.1.1 Propiedades.. ...................................................................................
148
7.1.2 Métodos.. .........................................................................................
149
7.1.3 Eventos.. ..........................................................................................
149
7.2 Aplicaciones para Internet.. ......................................................................
150
Conclusiones ....................................................................................................
159
Bibliografía.. ......................................................................................................
161
I Administrador de Proyectos
Dentro del diseño de aplicaciones se tienen que contemplar varios aspectos:
l
Creación de Bases de Datos (Tablas, Relaciones,Vistas),
l
Creación de Formas,
l
Creación de Reportes, Consultas,etc
En algunas aplicaciones visuales no existe una herramienta que nos guíe en
el diseño de nuestra aplicación, dentro de Visual Foxpro existe el Administrador
de Proyectos (fig 1 .l)..
1 .l Componentes del administrador de proyectos
Data
a. Databases: Conjunto de tablas relacionadas por campos en común. Las bases
de datos tienen extensión .DBC
1
b. Free Tables: Son aquellas que no pertenecen a ninguna base de datos y
tienen extensión . DBF.
Este tipo de tablas tienen una seria desventaja en comparación con las tablas
dependientes . Por mencionar algunas, las tablas dependientes pueden tener:
Nombres largos, Propiedades de campo, Propiedades de registro, Triggers,
Indices
principales y candidatos, Relaciones permanentes, Integridad
referencia1
y
Procedimientos
almacenados.
c. Queries: Estas son consultas sobre una o varias tablas, con el diseiiador
de
consulta es fácil recuperar los registros que cumplan con determinado criterio.
Documents
a. Forms: La formas son repositorios de objetos que sirven para recuperar
información almacenada en las tablas o para capturar información que va a ser
almacenada
o
procesada.
b. Reports: Son formas especiales para desplegar en impresora o en pantalla
informacibn
almacenada en las tablas
c. Labels: Diseilo de informes de etiquetas.
Class
Libraries
Mediante el administrador de proyectos es fácil manipular las clases
creadas por nosotros.
Code Y Other
Estos componentes son utilizados para crear código y menús para los
programas.
1.2 Opciones del Proyecto
Existen dos páginas en Options (opciones) del menú Tools (tools)
relacionadas con la edición de proyectos. Son las páginas View y Projects
(proyectos).
1.2.1 Página Projects (Proyectos Fig.l.2)
Cuando se desarrolla un aplicación es muy común que esta sea hecha por
un equipo de progrqmadores,
la aplicación es dividida y cada uno de los
programadores se encarga de un modulo. La forma de trabajar de Foxpro no hace
esto posible a menos que cada uno de los programadores tuviera sus propias
bibliotecas de clases. Sin embargo Foxpro nos provee de una herramienta que
nos va a permitir desarrollar aplicaciones en grupo y mantener una única versión
de cada archivo para todos los usuarios.
Proiect double-click action (al hacer doble clic en el provecto)
Indica la acción que se va a realizar al hacer doble clic en cualquier archivo del
proyecto.
l
Run selected file (ejecutar el archivo seleccionado): Ejecuta el ‘archivo
seleccionado en caso de ser un formulario, un informe, una etiqueta, un
programa 0 un menú.
l
Modify selected file (Modificar el archivo seleccionado): Modifica el archivo
seleccionado).
Prompt for Wizards
(pedir asistentes)
Cuando se crea un nuevo archivo da opción a utilizar un asistente para
generar el mismo.
Source Control Options (Opciones de control de códino
de origen)
Hay aplicaciones como Visual Sourceface, que nos permiten llevar un
control sobre las modificaciones que un grupo le hace a un proyecto.
a. Active source control provider (proveedor de código activo).
Indica el nombre de la aplicación que se va a utilizar como control (aquí se
seleccionaría
Microsoft
Visual
Sourface).
b. Automatically add new projects to source control (Agregar automáticamente
nuevos proyectos). ’
Especifica si los nuevos proyectos se van afiadir por defecto en la aplicación
de control de código de origen.
c. Check out files upon add (Desproteger los archivos al modificarlos)
Los archivos sometidos al control de código de origen se protegen para evitar
que dos usuarios puedan realizar modificaciones al mismo tiempo. Esta opcíbn
indica que si un archivo esta siendo modificado por un usuario, cuando un
segundo usuario intente modificarlo, verá un mensaje de error indicándole que no
puede
realizar
modificaciones.
d. Add files to source control upon add (Agregar archivos al control de código de
origen al agregarlos al proyecto)
Al habilitar esta opción cuando se ailada un nuevo archivo al proyecto, este
quedara bajo el control de código de origen.
e. Remove files from source control upon removal from project (Quitar archivos
del control de código de origen al quitarlos del proyecto)
Al seleccionar esta opción cuando se elimine un archivo del proyecto se quita
automáticamente del control de código de origen. Si esta opción no se encuentra
activa, el archivo permanecerá activo en el control de código, aun sin estar en el
proyecto.
f. Display dialog box for shortcut menu commands (Mostrar el cuadro de dialogo
para comandos del meú contextual)
Admite varios archivos cuando se selecciona un comando desde el menú de
contexto.
g. Text generation (Generación de texto)
Indica el nombre del programa cuya misión es la de generar un archivo de
texto representativo de los formularios, etiquetas, menús, informes, bibliotecas de
clases cada vez que se protege el proyecto.
Fig.l.2 Página Proyectos
1.2.2
Página View (Ver Fig. 1.3)
Esta permite especificar los elementos que se van a visualizar.
a. Status Bar (Barra de estado)
El la ultima barra que posee al ventada de Foxpro, en ella se visualiza diversa
información acerca de los objetos, el alias de la tabla activa, el registro actuan de
la tabla, etc. Modifica el estado de SET STATUS.
b. Clock (Reloj)
Muestra el reloj en la barra de estado. Corresponde al comando SET CLOCK.
c. Command Result (Resultado del comando)
Muestra el resultado de la ejecución de un comando en la ventana principal.
d. System Messages (Mensajes del sistema)
Habilita los mensajes del sistema en la barra de estado. Corresponde al
comando SET NOTIFY.
e . Recently used project list (Lista de proyectos usados recientemente)
Añade al menú archivo una lista de proyectos utilizados recientemente.
f. Open last project on startup(Abrir el último proyecto al iniciar)
Abre el último proyecto cada vez que arranca Visual Foxpro.
Fig.l.3 Página Ver
1.3 Generación de la aplicación final (Fig.l.4)
El objetivo final de un proyecto es la generación de una aplicación. El
producto final puede ser de tres tipos:
APP
Este tipo de archivo solo se puede correr desde Visual Foxpro, es
recomendable generar este tipo de archivos cuando el proyecto esta aun
en pruebas.
Exe
Este tipo de archivo contiene todos los formularios, informes, programas,
etiquetas y menús contenidos dentro del proyecto. Es recomendable
generar ejecutables cuando la aplicación esta lista para ser distribuida.
DII Ole Cuando se crea un archivo de este tipo es posible que sea usado por
cualquier otra aplicación.
Fig.l.4 Opciones de Generación
Opciones de Generación (Build options)
La generación y la compilacibn
de los archivos relativos al proyecto se hace
en forma incremental, es decir, que no vuelve a compilar aquellos archivos que
no han sido modificados desde su ultima generación.
a. Rebuild Project (Volver a general el proyecto)
El Visual Foxpro cuando se genera una aplicación ejecutable le anexa un
número de versión. Esta opción permite volver a regenerar una aplicación
ejecutable sin necesidad de generar una nueva versión.
b. Build Application (Generar una aplicación)
Esta opción genera un archivo App, el cual se puede ejecutar dentro de Visual
Foxpro.
c. Build Executable (Generar ejecutable)
Esta opción genera un archivo Exe, ejecutable desde el sistema operativo,
mediante el asistente se puede generar los discos necesarios para instalar
aplicación en otras PC.
d. Build OLE DLL ( Generar DLL OLE)
Esta opción genera una biblioteca de enlace dinámico (DLL) que se puede
utilizar desde cualquier otra aplicación con soporte OLE.
Las siguientes opciones afectan a la generación de la aplicación:
e . Recompile all files (Volver a compilar todos los archivos)
Al prender esta casilla se compilan todos los archivos de proyecto
independientemente si han sido modificados desde la ultima generación del
proyecto.
f. Display errors
(Mostrar errores)
Al generar un proyecto los errores que se produces se almacenan en un
archivo con el mismo nombre del proyecto y extensión Err, al activar esta casilla
este archivo es presentado en pantalla.
g. Run after build (Ejecutar después de generar)
Esta opción hace que se corra la aplicación inmediatamente después de
generarla.
1.4 Versión (Fíg.l.5)
Cuando se genera una aplicación ejecutable, se anexa la información como
los derechos de autor y numero de versión.
Fig. 1.5 Control de Versiones
a. Version Number (Número de versión)
El número de versión se utiliza para llevar un control sobre las compilaciones y
así poder comparar el número de versión con el de otras instalaciones.
Maior (Principal): Aquí indicamos el número de versibn principal. Admite cuatro
números.
Minor (Secundaria): Número de versión secundaria. Admite cuatro números.
Revision : Admite cuatro números y corresponde al número de revisión o
compilación efectuados hasta el momento. Este número de auto incrementa cada
vez que se compila si se activa la casilla Auto Increment (auto incremento)
a. Versión Information (Información de la versión)
Comments: Comentarios acerca del programa.
Company Name: Nombre de la organización a la que pertenecen los derechos
de autor.
File description: Descripción de la aplicación.
Legal Copyright: Datos de los derechos de la copia de aplicación.
Legal Trademarks: Nombre de las marcas registradas propietarias de la
aplicación.
Product
Name: Nombre del producto o marca.
Para complementar la información acerca del proyecto Visual FoxPro nos
ofrece la opción Project Info.
1.5 Project Info (Información del proyecto)
Este cuadro de diálogo se divide en tres paginas, la primera de ellas es
para documentar al proyecto con información adicional, la segunda para incluir o
excluir archivos del proyecto y la tercera para determinar el contenido de la
información relativa a aplicaciones OLE.
a. Project (proyecto fig.l.6)
Esta página complementa la información del autor, al directorio del
proyecto, o si ha de guardar información para depuración.
Campo
Descripción
Datos del autor
Este contiene los campos de compaMa,
ciudad,
estado, país, Código postal.
Local
Ultima
Directorio donde reside el proyecto.
generación
Archivos
Informar
Fecha y hora de la última generación
Número de archivos incluidos en el proyecto
de
depuración
Indica si ha de guardar información de
depuración en la aplicación con el fin de
visualizar el código fuente cuando se active la
ventana
Codificado
de
depuración.
Crear una aplicación codificada en la que no se
pueda visualizar ningún texto reconocible
Adjuntar
icono
Especificar el icono que se va asociar a la
aplicación
Fig. 1.6 Informacibn del proyecto.
b. Files (archivos fig. 1.7)
Campo
Descripción
Tw
Muestra un icono que identifica al tipo de
archivo.
Name
Nombre físico del archivo
Last Modified
Fecha de la última modificación del archivo.
Included
Aquí se pueden incluir o excluir los archivos del
proyecto. La aplicación ejecutable contiene
todos los ficheros marcados como incluidos en
el proyecto. De esta forma , se incluyen
imágenes,
programas,
formularios,
etc.
Sin embargo, no hay que incluir archivos que
sean modificables en tiempo de ejecución como
son las tablas y archivos de inicialización (.iríi),
pero tablas que son bases y no se han de
modificar si las podemos incluir.
Se incluye un archivo al activar esta casilla de
verificación.
Code Page
Identifica la página de códigos con la que fue
creado el archivo en cuestión. Para que la
información de esta columna este actualizada,
será necesario presionar el botón Update
Native Code Pages.
c. servers (Servidores OLE fig. 1.8)
Si el objetivo es crear una aplicación servidora OLE, es imprescindible
consultar el contenido de esta página.
Fig. 1.8 Página Servidores OLE
Campo
Descripción
Class Library
Nombre de la biblioteca donde se ha definido la
clase.
Class Name
Nombre de la clase.
Instancing
Indica si se va a permitir crear varias instancias
de la clase o, si cuando se haga referencias a la
clase va a ser la misma instancia siempre.
Despription
Comentario asociado a la clase.
Help File
Nombre del archivo HLP de ayuda.
Help context ID
Número del tópico de ayuda .
.
Una vez generada la aplicación, hay que generar el/los disco(s) de distribución
siguiendo el Setup Wizard (Asistente para instalar), el cual encontramos en el
menú Tools
(herramientas):
1. Located Files (Encontrar archivos fig. 1.9). Copiar el archivo ejecutable y
todos los archivos (bases de datos, tablas relacionadas, así como los archivos
marcados como excluidos) que el proyecto necesite. Recordar que el archivo
ejecutable contiene los formularios, informes o mapas de bits marcados como
incluidos en la aplicación.
Fig. 1.9 Paso localizar archivos
2. Specify Components (especificar componentes fig. 1.10).
Fig. 1 .lO Especificar componentes
Componete
Descripción
Visual Foxpro runtime
Este componente es obligatorio
Microsoft Graph 5.0 runtime
Se debe instalar si la aplicación hace uso de
este
ODBC Drivers
componente.
Se deben instalar los controladores ODBC si se
va a accesar fuentes de datos externas
OLE Servers
En caso de que la aplicación contenga
servidores OLE, estos de deben agregar a la
lista.
14
ODBC Drivers (fin. 1.11)
Fig. 1.11 ODBC Drivers
OLE Servers (fig 1 .12)
..- , . -
Fig.l.12 OLE SERVERS
3. Create Disk Image Directory (Crear directorio imagen de disco fig. 1.13)
En esta sección elegimos el soporte en el cual queremos distribuir nuestra
aplicación, se pueden usar discos de 3 X y 5 ‘% pulgadas, si se quiere ‘usar el
CD-ROM como soporte; entonces lo adecuado es seleccionar Red Setup.
Fig. 1 .13 Crear directorio imagen
4. Specify Setup Options (Especificar opciones de instalación fig. 1.14)
Durante la instalación se puede pedir cierta información (nombre de la
empresa propietaria de los derechos), así como mostrar el nombre de la
instalación que se esta instalando.
En ciertas ocasiones puede ser necesario configurar algunas opciones de la
aplicación para que esta funcione. Esto se soluciona mostrando al usuario un
archivo de tipo leame.txt.
El último cuadro de texto, llama un ejecutable
inmediatamente después de finalizar la aplicación.
Fig: 1.14 Especificar opciones de Instalación
5. Specify Default Destination (Especificar destino predeterminado fig. 1.15)
Aquí se indica el directorio default
donde se va a instalar la aplicación, así
como si se le va a permitir al usuario modificar el grupo y el directorio de trabajo.
Fig.
1.15 Especificar destino prederminado
6. Change File Settings (Cambiar configuraciones de archivos Fig.1.16)
16
Antes de finalizar q
efinitivamente la generación de los directorios de
instalación, vemos una lista de todos los archivos que se van a comprimir y
distribuir.
Fig.. 1.16 Cambiar configuraciones de del ‘echo
Componente
Descripción
File
Nombre del archivo
TargetDir
Ubicación final del archivo. Admite 3 directorios
l
Appdir: directorio de la aplicación.
l
Windir:
l
Directorio de Windows
WinsysDir: Directorio System de Windows.
PM Item
Indica si el archivo creará un acceso directo .
Active X
Los controles Active X siempre se instalan en el
directorio Winsys Dir.
7. Finish (Finalizar fig. 1.17)
Fig. 1.17 Finalizar
En el paso siete se por finalizado el asistente y a continuación presentará
un informe de la instalación.
II CREACION DE LA BASE DE DATOS
1. Ubiquese en el carpeta Data (datos fig. 2.1) y luego en Databases y presione
el botón New
Fig. 2.1 Pagina Datos
La ventana del Database
Designer (fig 2.2) aparecerá :
‘- Fig. 2.2 Diseñador de Bases de Datos
Puede ocupar la barra de herramientas Database Designer para el conitrol
de la Base de Datos.
Descripción de los botones de la barra de herramientas:
I
,
Crear una nueva tabla.
Agregar una tabla existente
Eliminar una tabla seleccionada
Modificar una tabla seleccionada
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)
Crear una nueva tabla:
2.1 TABLAS
Tablas Dependientes
El Visual Foxpro maneja dos tipos de tablas, las pertenecientes a una base de
datos y las tablas libres, estas ultimas son independientes a cualquier base de
datos. La ventajas de manejar las primeras son las siguientes:
l
Manejo de nombres largos tanto para las tablas como para los campos.
l
Manejo de títulos y clases asociadas a los campos.
l
Valores de Default, Mascaras de entradas y salida de datos.
l
Reglas a nivel regjstro.
l
Triggers.
1. Click en el boton de Nueva tabla (Fig. 2.3), aparecerá la ventana New Table
Fig. 2.3 Nueva tabla
Se selecciona New Table, luego aparece la ventana de guardar el archivo.
La ventana de Table designer (diseñador de tablas fig. 2.4) aparecerá en
pantalla:
Esta es la parte mas importante de la tabla, es aquí donde se define la
estructura de datos que contendrá dicha tabla. El primer paso es definir los
campos, tipos, tamaño, Formato y Reglas de q lapidación en el carpeta de Fields.
Fig. 2.4 Pagina Campos
a. Definición de camDos:
Igual que en las versiones anteriores, la definición de campos es igual. Se
introduce el nombre del campo (name) el tipo de datos que soportará (Type) y el
tamaño.
b. Definición del Display
Format : Es el formato de salida del campo, ejemplo si fuera numérico 9,999.99
si fuera carácter !!!!!!!!!!!!, para que solo acepte mayúsculas
Input mask : Igual que el Format, lo único que es para la entrada de datos.
o
Caption : Descripción mas precisa del campo, es de utilidad al diseñar los
Formularios, puesto que es un valor que aparecerá asociado al campo.
c. Definición de reqlas 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)
Rule : Es la regla de validación, ejemplo: id > 0, si queremos que acepte valores
positivos.
Message: Es el mensaje personalizado que queremos que aparezca en pantalla a
la hora de violarse Ia- regla de validación del campo. Ejemplo : ‘Solo se aceptan
números positivos’ (nota: el texto debe escribirse entre comillas).
Default Value : Valor por defecto del campo. (nota: hay que respetar el tipo de
dato del Campo)
d. Mao Field Tvpe to classes (Asignar tipo de campo a clases)
Cuando creamos un formulario, asociamos un objeto a un campo. Dentro de
esta sección se puede asignar una clase de base o una clase personalizada.
Display Library (Mostrar biblioteca):
Nos permite seleccionar una clase
personalizada de alguna librería, para asociarla al campo actual.
Display Classes (Mostrar clases): Muestra las clases de base del Visual Foxpro
para asociar alguna con el campo actual.
2.2 INDICES (fig. 2.5)
Luego de hacer la definición de los campos, pasamos a la definición de
Indices de la tabla, que será muy importante a la hora de crear \as re\ac\ones
entre \as
tablas.
Foxpro agrupa los índices de una tabla creando un solo archivo (.CDX)
por todos los indices que se quieran crear. Este archivo de indices se abre
automáticamente con la tabla, además tiene el mismo nombre de esta. A este tipo
de índices se le llama estructurales. El termino “Estructural” se refiere al hecho de
que Visual Foxpro trata al archivo de índices como una parte intrínseca de la tabla
y la abre automáticamente cuando usas la tabla, asimismo su mantenimiento es
automático cuando se agrega, se borra o se modifica registros.
Nombre del o los
campos que
componen el índice
Fig. 2.5 Página lndices
a. Nombre de\ lndice (name)
Introducir el Nombre del índíce. Un índice es conocido también como TAG.
b. TYP~ ( tipo de Indice)
24
Primary : Llave primaria. Este tipo de índices no permiten valores duplicados
en el campo o en la expresión por la cual se esta indizando. Solo se puede
crear un índice de este tipo por tabla y son utilizados para establecer reglas de
integridad
Candidate
referencial.
: Llave candidata. Este es un índice que no permite valores
duplicados en el campo o en la expresión por la cual se esta indizando. El
termino de candidato se aplica porque es índice candidato a ser llave primaria.
Este tipo de índices no tienen restricción en cuanto al numero de estos por
tabla, y también son utilizados para establecer reglas de integridad referencial.
Unique
: Llave finka. Un índice Unico solo almacena la primera ocurrencia
del valor en el archivo de índices. El nombre de “Unico” se refiere a que el
archivo de índices solo contiene valores únicos.
Regular
: Llave foránea o normal. Este tipo de índices son simples no son
únicos, candidatos o primarios y son utilizados para ordenamiento y búsqueda
de
registros, no fuerza a datos únicos. Son utilizados para estableces
relaciones de uno a muchos.
c. Nombre de la Expresión
Nombre de los campos que conforman la llave primaria:
Ejemplo : id, o si son varios campos : id + linea
Nota: si los campos no son del mismo hay que forzarlos al tipo de dato deseado,
ejemplo: si id es carácter y linea, entoces el nombre de la expresión sería:
Id + STR(linea)
STR() convierte de número a carácter y VAL0 convierte de carácter a númerico.
25
2.3 VALIDACIONES A NIVEL REGISTRO (fig. 2.6)
Después de detallar los indices, se define los eventos de La validación a
nivel de registro y los eventos que se ejecuten a la hora de Insertar un registro, de
actualizar o borrar.
Fig. 2.6 Pagina Tabla
a. Record Validation (validación de registros)
Rule (regla): Es una condición que se comprueba cuando se agrega o modifica
un registro.
Message (mensaje): Mensaje que aparecerá cuando no se cumpla con la
condición de la regla de validación.
b. Triqclers (desencadenantes)
Insert, Update, Delete (insertar, actualizar, borrar): Es código que se ejecuta
automáticamente cuando se produce una alta, una actualización o un borrado de
registro.
Puesto que la mayoría de las veces deseamos que se ejecute un
procedimiento
almacenado,
basta
con
especificarlo.
2.4 RELACIONES ENTRE TABLAS:
Visual Foxpro maneja dos tipos de relaciones, las que se crean en el
momento de diseño de la Base de datos (permanentes) y las que se crean en
tiempo de ejecución (temporales) de la aplicación.
Las relaciones mas comunes entre tablas se definen :
De uno a uno : Ejemplo de una llave primaria a otra llave primaria
De uno a muchos : Ejemplo de una llave primaria a una normal o Foránea.
Relaciones Permanentes (fig. 2.7)
Estas poseen las siguientes características:
l
Son creadas en la fase de diseño.
l
La relación es abierta cuando se abre la base de datos
l
Son entre índices:
J Si la relación es de un índice primario a un índice normal la relación es de
uno-a-muchos.
J Si la relación es de un índice primario a un índice primario la relación es de
uno-a-uno.
l
Permite utilizar la integridad referencial.
Las relaciones entre tablas se crean arrastrando la llave de la tabla a la llave
de otra tabla.
Relación
(de uno
Fig. 2.7 Disenador
de Bases de Datos
La figura muestra una relación entre las tablas región y departamento, la
relación se leería así : “Una región tiene muchos departamentos”.
Relaciones Temporales (Fig. 2.8)
Sus características principales son:
l
Son creadas por programaci6n
y se activan al momento de la ejecución.
l
La relación se desactiva cuando cualquiera de las tablas es cerrada o por la
instrucción Set Relation To.
l
No es necesario tener un índice primario en la tabla madre, se puede
relacionar un campo a la tabla hija, la cual debe tener un índice (de cualquier
tipo).
l
Se pueden utilizar las tablas libres.
l
No se puede utilizar la integridad referencial.
Para crear las relaciones temporales se utiliza la ventana de sesión de datos.
1.
Hacer clic en el menu Window, opción Data Session.
Aparecerá la ventana de Data Session, si las tablas no aparecen dentro del
recuadro de Aliases debes abrirlas con el botón Open
Fig. 2.8 Sesión de datos
2. Seleccionar la tabl.a madre y hacer clic en Relaciones.
3.
Seleccionar la tabla hija (fig. 2.9).
Aparecerá la siguiente pantalla.
Fig. 2.9 Establecer el orden de los indices
Seleccionamos el índice con el cual deseamos relacionar ambas tablas (la
expresión del indice debe coincidir con la expresión de la relación).
4.
Construimos la expresión con la cual queremos relacionar ambas tablas, a
partir de los campos de la tabla madre (fig. 2.10).
Fig. 2.10 Diseiiador
de Expresiones
5. Si deseamos establecer la relación de uno-a-muchos, solo hacemos clic en
one-to-many.
Tablas Libres.
En comparación con las tablas dependientes, a las tablas libres las
acompañan una serie de restricciones:
l
l
l
No es posible utilizar nombres largos.
No te ofrece validaciones de campo, ni de registro.
No puedes asociar los campos a ninguna clase.
Para crear una tabla libre es necesario:
1. Cerrar los proyectos activos.
2 . Hacer clic en N& de barra de herramientas (fig. 2.11).
<LIv...uII
-s,
Fig. 2.11 Barra de herramientas
Ejercicio Práctico:
Cree la siguiente base de datos:
Wk.ids:
id
nombre
tebfono
diieccim
cuidad
credtpq
empmd
regionjd
wdjd
prcd&id
precio
cantidad
III PROGRAMACIÓN ORIENTADA A OBJETOS
El contenido de este tema toma a consideración que el usuario posee
conocimientos de esta metodología de programación, por lo que a continuación se
dará un breve repaso a los conceptos básicos de está metodología
3.1 Elementos de la programación orientada a objetos
Obieto
Definiremos un objeto como algo tangible que posee caraacterísitcas Y
tiene un comportamiento.
que
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.
A la creación de un objeto a partir de una clase le llamaremos
instanciamiento.
Propiedades.
Las propiedades son los datos que manejan las clases, es decir las
características del objeto. Estas propiedades se declaran en la definición de la
clase y permanecen en todo momento asociados a los objetos creados bajo esa
clase.
Herencia.
La herencia se da a partir de la creación de subclases y consiste en que las
subclases heredan las propiedades y los métodos que se hayan definido en la
clase base.
La herencia es un mecanismo que nos va a permitir reutilizar nuestro
código de forma fácil y ordenada.
Encapsulación
Aunque parece un termino extraiio,
es muy habitual en POO. Hace
referencia a la capacidad de los objetos para incluir dentro de si tanto datos como
acciones. Las clases de distinguen unas de otras justamente por tener unos datos
y acciones que las diferencian. Los objetos de una misma clase se diferencian
entre si por tener datos diferentes.
Polimorfismo.
Trabajando en la programación estructurada se debe tener cuidado de no
poner el mismo nombre a dos variables o a dos procedimientos, sin embargo en
la PO0 podemos llamar a un método o a una propiedad de una clase de igual
forma que un método o propiedad de otra. Esta característica es lo que se
denomina polimorfismo.
Sobrescritura
En algunas ocasiones, en la clase hija, se desea modificar el
comportamiento de algún método o el contenido de alguna propiedad de la clase
base. Este hecho se denomina sobrescribir. Con él modificamos los miembros de
una clase base sin afectar al código de la misma.
Métodos
Los métodos son la reacciones asociadas a cada evento, es decir, son
funciones o procedimientos asociados a este tipo objeto, auque puede haber
métodos que no respondan a un evento.
Eventos
Existe una serie de métodos especiales, que normalmente no se ejecutan
por ser invocados de forma explícita, sino que son lanzados cuando ‘pasa algo’,
es decir, cuando se produce un evento. Estos eventos pueden ser un clic, el
movimiento del ratón, un pulsación de tecla, etc..
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 del la clase se haga de forma ordenada.
Mensaies
Cuando llamamos a un método de un objeto se dice que estamos enviando
un mensaje al objeto para que realice una determinada acción. Así cuando
enviamos un mensaje a un objeto estamos ejecutando el método correspondiente
En Visual FoxPro se pueden generar 2 tipos de clases: Visuales y no
Visuales.
3.2 Generación De Clase Visuales
Las clases que pueden ser creadas son de 2 tipos:
l
Las clases creadas a partir de las clases bases y que no son contenedoras
de otros objetos.
l
Las clases contenedoras.
Existe una excepción, la clase custom. Esta clase no es visual, pero es
posible disefiarla mediante el generador de clases visuales, así como en tiempo
c-h f+iec~ rif5n
Las clases de visuales se pueden generar de 3 formas:
l
Estando en el proyecto elegir nuevo en la página de Classes. Si existe
la biblioteca en la que se quiere agregar la clase elegirla.
l
l
Desde del menú principal, elegir File (Archivo) la opción New (Nuevo).
En la ventana Command (Comandos), mediante la sentencia Create
Class.
Fig. 3.1 Nueva Clase
Para crear una nueva clase es necesario proporcionar la información requerida
en el cuadro de diálogo anterior.
a. Class Name (Nombre de la clase)
Nombre que se le dará a la nueva clase. Permite hasta 255 caracteres.
b. Based On (Basada en)
Nombre de una clase base en Visual Foxpro, o el nombre de una clase ya
definida alguna biblioteca de clases visuales. Si selecciona el segundo de
los casos, aun lado de la palabra From (desde) aparecerá el nombre de la
biblioteca de clases visuales de la que se haya extraído la definición de la
clase.
c. Store In (Almacenar en)
Contiene el nombre de la biblioteca de clases donde se va almacenar la
nueva clase, si la biblioteca de clases no existe, esta se creara.
Una vez proporcionados los datos anteriores, Visual FoxPro
presentara el dìseAador
nos
de clases.
3.2.1 Classes Designer (Disenador
de clases fig. 3.2)
La apariencia del diseñador de clases visuales es idéntica a la del
disenador de formularios.
dA.- . . . --_-.-- ._.“....... - _.._..-. .._. - ^_.. . .__ - ..----..... --..
Fig, 3.2 Diseñador de Clases
A la nueva clase se le pueden añadir:
l
l
Propiedades
Metodos
3.2.2 Propiedades
A las propiedades ya existentes de la clase base se le pueden anadir
nuevas. En este punto cabe recalcar que las nuevas propiedades corresponden a
la clase que se esta creando, no a la clase base. Estas propiedades aparecerán a
continuación de las propiedades ya existentes en la pagina Other (Otros) de la
ventana de Propierties. Para agregar una nueva propiedad a la clase haga clic
en la opción New Propierty (Nueva propiedad fig. 3.4) del menú Class (Clase
fig. 3.3).
Fig. 3.3 Menú Clase
Fig. 3.4 Nueva propiedad
La información requerida para definir una nueva propiedad es la siguiente:
l
Name
(Nombre). Nombre de la nueva propiedad.
l
Visibility (Visibilidad). Indica el ámbito que va atener la nueva propiedad.
Admite valores: Public (público), Procted (protegido) y Hidden (Oculto).
l
Description (Descripción). Una breve descripción de la propiedad. Esta
descripción aparece en la parte inferior de la ventana Propierties
Una propiedad puede ser de cualquier tipo de datos definidos: carácter,
numérico, fecha, fecha-hora, lógico. Además una propiedad puede almacenar los
datos en forma de matriz, la cual debemos declarar con sus dimensiones iniciales
desde la ventana de New Propierty (nueva propiedad).
Vector[l]
3.2.3 Métodos (fig.3.5)
Se pueden crear métodos que en la clase base no existan.
Fig. 3.5 Nuevo método
l
l
Name (Nombre). Nombre del nuevo método.
Visibility (Visibilidad). Indica el ámbito que va a tener el nuevo método.
Admite valores: Public (público), Procted (protegido) y Hidden (Oculto).
l
Description
( Descripción). Una breve descripción del método.
Los métodos definidos por el usuario se van aAadiendo
a la lista que figura en
la página Métodos por orden alfabético y en minúscula.
3.2.4 Archivos .H
Los archivos de encabezado se utilizan para agrupar constantes
predefinidas que utiliza el código fuente.
Para incluir un archivo de definiciones en la clase que se está
desarrollando, hay que elegir la opción Include File (incluir archivo) del menú
Class. De esta forma, las constantes predefinidas en el archivo están disponibles
para todo el código incluido en cualquiera de los métodos de la clase.
32.5 Documentación de la clase (fig. 3.6)
Junto con la definición de la clase se puede adjuntar la siguiente
información.
Fig. 3.6-Información
de la clase
C LASS (clase)
Toolbar icon (icono de barra de herramientas). Determina el icono o
bitmap utilizado para representar esta clase cuando se utiliza la biblioteca
de clases.
Container icon (icono contenedor). Se utiliza este icono para representar
esta clase cuando se visualiza desde el examinador de clases.
Scale Units (Unidades de Escala). Fija la unidad de medida utilizada para
diseiiar la clase, puede elegir entre píxeles y fóxeles.
Descriotion (Descripción). Comentarios acerca de la clase.
OLE Public
(OLE Público). Indica si esta clase debe formar parte de un
servidor OLE.
MEMBERS (miembros)
En esta segunda pagina se visualiza una lista de miembros componentes
de la clase. En ella se incluyen todos los eventos, métodos y propiedades
definidos. Cuando se elige un miembro, se puede modificar el mismo.
3.2.6 Modificación de una clase
Se pueden modificar en la clases visuales de 3 formas:
l
Estando en el proyecto, elegir Modify (modificar) en la página Classes
(clases), posicionados en la clase que se desea modificar.
l
Desde el menú principal, escoja del menú File (archivo) la opción Open
(abrir) o escoja el icono Open (abrir) de la barra de herramientas
estándar.
l
Desde la ventana de comandos, mediante la sentencia Modify Class.
3.2.7 Instanciando Objetos
Para crear una instancia de una clase contenida en las bibliotecas de
clases es necesario que ésta esté accesible. Esto se hace con el comando Set
Classlib. Este comando requiere como argumento el nombre de la clase,
incluyendo la ruta si no es la corriente.
Set Classlib to c:\devstudio\vfp\clases\ejemplo.vcx
Sub~campo=CreateObject(“campo”)
3.2.8 Operadores de Referencia.
Cuando se instancian varios objetos con la misma clase hay que hacer
referencia a las sus propiedades y eventos con los operadores de referencia. Uno
de los objetivos de la programación orientada a objetos es la reutilización del
código, por lo que conveniente utilizar referencias relativa, para no utilizar
directamente su nombre. Visual FoxPro
cuenta con los siguientes operadores:
Operador
Finalidad
This
Hace referencia al objeto que esta en el foco.
Thisform
Hace referencia a la forma desde un objeto de la misma.
ThisFormSet
Hace referencia al FormSet desde un objeto o forma
contenida dentro del FormSet.
Para cambiar una propiedad:
This.caption=“hola”
Para cambiar un evento:
This.gotfocus
3.2.9 Ejemplo de la creación de una clase con propiedades y métodos:
3.2.9.1 Definir una clase.
Para definir una clase utilizaremos la siguiente instrucción:
Define Class . . . . . . . EndDefine
Inicia una definición de clase definida por el usuario o una clase base.
Incluye las definiciones de propiedades, eventos y métodos pertenecientes a la
misma.
DEFINE CLASS NombreClase
AS ClaseBase
[[PROTECTED NombrePropiedadl,
NombrePropiedad
NombrePropiedad2...]
= Expresión...]
ADD OBJECT [PROTECTED] NombreObjeto
[WITH ListaPropiedades]]..
as ClaseBase[NOINIT]
.
[[PROCTECTED] FUNCTION 1PROCEDURE nombre
[NODEFAULT]
Instrucciones
[ENDFUNC 1ENDPROC]]...
ENDEFINE
Argumento
Descripción
NombreClase
Nombre asignado a la clase
ClaseBase
Clase en la cual está basada
PROTECTED
Define como protegidas las propiedades que
le siguen. Este mismo argumento se utiliza
con funciones o procedimientos contenidos en
la clase. Las propiedades, métodos y eventos
protegidos sólo sin visibles desde la’ propia
clase.
NombrePropiedad
= Expresión Asigna valores predeterminados a cualquier
propiedad.
ADD OBJECT
AAade un objeto procedente de una clase
base o de uno definido por el usuatio.
NOINIT
Evita que se ejecute el evento INIT al anadir el
objeto mediante el comando ADDOBJECT.
WITH ListaPropiedades
Inicializa las propiedades del objeto que se
está aAadiendo
con valores
Argumento
Descripción
FUNCTION 1PROCEDURE
Inicia
la
definición
de
una
función
o
procedimiento de usuario. Existen dos tipos de
funciones
o
procedimientos:
Eventos. Accionados de forma automática al
recibir un mensaje del sistema.
Métodos.
Accionados por el usuario en
respuesta a una llamada desde un programa.
Eiemplo de una clase Custom
DEFINE CLASS cliente AS CUSTOM
cNombre = “”
cApellidos = “”
dFechaNacimiento
= {}
cEstadoCivil = “Soltero”
nCredito=O
PROCEDURE Alta
LPARAMETERS cNombre,
;
cApellidos, ;
d Fecha
This.cNombre = cNombre
This.cApellidos
= cApellidos
This.dFechaAlta = dfecha
ENDPROC
ENDDEFINE
Eiemplo de una clase base
DEFINE CLASS BotonSalida
Caption
= “\cSalida”
AS CommandButton
&& Titulo del Botón
Left
=175
&& Lado izquierdo del botón
=60
Top
Height = 25
&& Altura del botón
Visible = .T.
&& Poner visible el botón en la forma
Fontltalic = .T.
&& Texto Cursivo
ForeColor
&& Posición superior del botón
= RGB(0,0,255)
&& Cambiar el color del texto del botón
PROCEDURE Click
WAIT WINDOW “Ejecutando el procedimiento Click.”
CLEAR EVENTS
&& Para y cierra la forma
ENDPROC
ENDDEFINE
3.2.9.2 Crear un objeto.
Ya podemos crear objetos basado en esta clase, para ello utilizamos la
siguiente expresión :
oCliente
= CREATEOBJECT( “cliente” )
oCliente2=
CREATEOBJECT( “cliente” )
Una vez creado el objeto le podemos dar valores:
oCliente = CREATEOBJECT( “persona“ )
oCliente .cNombre = “Angélica”
oCliente .cApellidos
oCliente
= “Navarro Jacobo”
.dFechaAlta = (12-05-99)
0 en su caso:
oCliente
= CREATEOBJECT( “persona” )
WITH oCliente
.cNombre = “Sofía”
.cApellidos = “Flores Guerrero ”
.dFechaAlta = (19-I O-99)
ENDWITH
3.2.9.3 Ámbito de un objeto.
Los objetos pueden declararse como LOCAL, PRIVATE o PUBLIC. Por
default, los objetos son de tipo PRIVATE y por lo tanto existirán mientras se
ejecute el programa que los creó. Una vez salgamos de este programa el objeto
se borrará automáticamente. El objeto puede ser usado en el programa que lo
creó y en todos lo programas llamados desde él.
Si declaramos el objeto como LOCAL el objeto persistirá hasta la salida del
programa que lo creó, pero los programas que sean llamados desde el programa
de creación no podrán hacer uso de este objeto, pues permanece oculto par a
ellos, evitando así posibles problemas con los nombres de los objetos.
La declaración de un objeto PUBLIC, hace que este permanezca hasta que
lo borremos o salgamos de VFP. Este objeto puede ser usado por cualquier
programa desde el momento que es creado hasta que sea borrado.
PUBLIC oCliente
OCliente
= CREATEOBJECT( “Cliente” )
...
RELEASE oCliente
3.2.9.4 Mensajes
Los mensajes los describimos en las primera sección de capítulo. Cuando
enviamos un mensaje de alta a un objeto cliente en realidad estamos ejecutando
el método correspondiente :
oCliente
= CREATEOBJECT( “cliente” )
oCliente .Alta( “Angélica”, ;
“Navarro Jacobo”, ;
(1 Z-05-99) )
3.2.9.5 Ocultación.
Retornemos el concepto de ocultación, 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.
DEFINE CLASS deuda AS CUSTOM
PROTECTED nMonto
nMonto = 0
PROCEDURE Incremento
LPARAMETERS ncantidad
This.nMonto = This.nMonto+ ncantidad
ENDPROC
ENDDEFINE
Si tratásemos de acceder directamente a la propiedad nMonto nos daría un error,
pues esta propiedad está protegida.
oSaldo
= CREATEOBJECT( “Deuda” )
oSaldo. Incremento ( 1000 )
oSaldo.nMonto = 100
* Error
3.2.9.6 Polimorfismo.
Es la característica de nombrar dos propiedades o métodos de diferentes
clases de la misma forma.
DEFINE CLASS Cliente AS CUSTOM
cNombre = “”
ENDDEFINE
DEFINE CLASS Proveedor AS CUSTOM
cNombre = “”
ENDDEFINE
OClientel = CREATEOBJECT( “Cliente” )
Oproveedorl = CREATEOBJECT( “Proveedor” )
? OCliente .cNombre
? Oproveedorl .cNombre
3.2.9.7 Objetos como propiedades.
Dentro de una clase podemos definir objetos como propiedades miembro.
DEFINE CLASS persona AS CUSTOM
cNombre = “”
cApellidos = “”
ENDDEFINE
DEFINE CLASS Matrimonio AS CUSTOM
dfecha = {}
ADD OBJECT Conyugel AS Persona
ADD OBJECT Conyuge2 AS Persona
ENDDEFINE
El uso del objeto seria como sigue:
oPareja
= CREATEOBJECT( “Matrimonio” )
oPareja .Conyugel .Nombre = “María”
oPareja2.Conyuge2.Nombre
= “José”
S6lo las clases denominadas contenedoras miembros objetos y la clase
CUSTOM es una de ellas.
3.2.9.8 Herencia.
En los ejemplos anteriores siempre heredamos de la clase base CUSTOM (AS
CUSTOM). Para heredar una clase de otra veamos el siguiente ejemplo:
* Clase original
DEFINE CLASS Persona AS CUSTOM
cNombre = “”
cApellidos = “”
dFechaNacimiento
= {}
PROCEDURE Nacimiento
LPARAMETERS
cNombre, ;
cApellidos, ;
dfecha
This.cNombre = cNombre
This.cApellidos
= cApellidos
This.dFechalngreso = dfecha
ENDPROC
ENDDEFINE
* Clase nueva
DEFINE CLASS Alumno AS Persona
cEscuela = “”
cCarrera= “”
ENDDEFINE
Si instanciamos un objeto alumno, podemos hacer uso de las propiedades de su
clase así como las propiedades de la clase persona, puesto que esta heredando
estas.
OAlumno
= CREATEOBJECT( “Alumno” )
* Propiedades de la clase Persona
oAlumno .cNombre = “Juan”
oAlumno .cApellidos
= “López Garrido”
* Propiedad de la clase Alumno
oAlumno .cEscuela = “FIME”
oAlumno .cCarrera=“Computación”
3.2.9.9 Sobreescribir métodos o propiedades.
En ciertas ocasiones no nos es útil algún método o propiedad de la clase
padre, por lo que querremos modificarlo.
DEFINE CLASS punto AS CUSTOM
cx=o
cY=O
PROCEDURE Punto
LPARAMETERS X,Y
This.x=X
This.y=Y
ENDPROC
FUNCTION Distancia
LPARAMETERS X,Y
dx=O
dy=O
dx=this.x - x
dy= this.y - y
RETURN SQRT(dx*dx+dy*dy)
ENDFUNC
ENDDEFINE
*Clase Nueva
DEFINE CLASS Punto3D
AS Punto
cz=o
PROCEDURE Punto3D
LPARAMETERS X,Y,Z
This.x=X
This.y=Y
This.z=Z
ENDPROC
FUNCTION Distancia
LPARAMETERS X,Y,Z
dx= this,x-x
dy= this,y-y
dz= this,z-z
RETURN SQRT(dx*dx+dy*dy+dz*dz)
ENDFUNC
ENDDEFINE
En el ejemplo anterior el método Distancia de la clase padre, no nos servia
para la clase hija, por lo se tuvo que rescribir.
3.2.9.10 El Operador ::.
En el ejemplo anterior estamos duplicando parte del código del método
Distancia
de la clase Punto en el método Distancia la clase Punto3D, aunque solo son
pocas líneas en ocasiones querremos aprovechar el código escrito en la clase
padre. Para estos casos se ha creado el operador :: u operador de resolución de
alcance. Con el podemos hacer referencia al método de una clase superior aun
cuando este método se hubiera sobreescrito.
Para hacer uso de este operador debemos indicar el nombre de la clase
padre, el operador ::, y el nombre del método. Utilizando este operador la clase
Punto3D
puede quedar de la siguiente forma :
DEFINE CLASS Punto3D
AS Punto
cz=o
PROCEDURE Punto3D
LPARAMETERS X,Y ,Z
Punto::Punto
This.z=Z
ENDPROC
FUNCTION Distancia
LPARAMETERS X,Y,Z
Punto::Distancia
dz= this,z-z
RETURN SQRT(dx*dx+dy*dy+dz*dz)
ENDFUNC
ENDDEFINE
Con esta característica cualquier modificación en el método de la clase
padre, se ve automáticamente reflejado en el método de la clase hija.
IV CLASES BASE DE VISUAL FOXPRO
Las Clases base de Visual FoxPro son las siguientes:
Check Box
Casilla de verificación
Column
Columna definida de una cuadrícula
ComboBox
Cuadro combinado
CommandButton
Botón de comandos
CommandGroup
Grupo de comandos
Container
Contenedor
Control
Control
Cursor
Cursos de tabla
Custom
Usuario
DataEnvironment
Entorno de datos
EditBox
Cuadro de edición
Form
Formulario
FormSet
Conjunto de formularios
Grid
Cuadrícula
Header
Cabecera contenida dentro de una cuadrícula
Imane
Imagen
Label
Etiqueta
!&
Línea
ListBox
Cuadro de Lista
OLEControl
Control contenedor OLE
OLEBoundControl Control dependiente OLE
OptionButton
Botón de opción
OptionGroup
Grupo de opciones
Pase
Página
PageFrame
Marco de página
Relation
Relación
Separator
Separador en barra de herramientas
Shaoe
Forma
Spinner
Control numérico
TextBox
Cuadro de Texto
Timer
Temporizador
ToolBar
Barra de herramientas
4.1 Propiedades comunes a varias clases
Alignment
Permite alinear el texto respecto al tamaño del objeto. Sus valores varían
dependiendo del tipo de objeto de que se trate.
Para las casillas de verificación y para los botones de opción, las opciones
son las siguientes:
Valor
Descripción
0
Es el default alinea el control a la izquierda con el texto a la
derecha.
1
Alinea el control a la derecha con el texto a la izquierda.
Para Cajas combinadas, cuadros de edición, encabezados, controles y
numéricos; las opciones de configuración son las siguientes:
Valor
Descripción
0
Es el Default, alinea el texto a la izquierda
1
Alinea el texto a la derecha, es el Default para los controles
numéricos.
2
Alinea el texto centrado
3
Automático, alinea el texto de acuerdo al control.
Para las cajas de texto:
Valor
Descripción
0
Alinea el texto a la izquierda
1
Alinea el texto a la derecha.
2
Centra el texto.
3
Automático. Alinea el texto dependiendo del tipo de dato,
numéricos a la derecha, texto a la izquierda.
Para una columna:
Descripción
Valor
0
Alinea el iexto a la izquierda centrado verticalmente.
1
Alinea el texto a la derecha centrado verticalmente.
2
Centra el texto horizontal y verticalmente.
3
Automático, es el Default alinea el dato de acuerdo al tipo de
datos, numéricos a la derecha y otros al derecha.
4
Alinea el texto arriba y a la izquierda.
5
Alinea el texto arriba y a la derecha
6
Alinea el texto arriba y centrado
7
Alinea el texto abajo y a la izquierda
8
Alinea el texto abajo y a la derecha
9
Alinea el texto abajo y centrado.
AutoSize
Valor booleano para ajustar el tamaño del objeto según sea el contenido del
mismo.
BackColor
Color del fondo del objeto.
BackStyle
Especifica cuando el fondo de un objeto es transparente u opaco.
Descripción
0
Transparenre
1
Opaco
BaseClass
Especifica el nombre de la clase base en la cual esta basada el objeto.
BorderColor
Especifica el color del borde de un objeto.
BorderStyle
Indica el estilo del borde.
Para los grupos de comando, cajas de edición, Imágenes, Etiquetas, Grupos
de opciones y cajas de texto, las opciones de configuración son:
Descripción
0
Ninguno. Default para imágenes y etiquetas
1
Fijo Simple. Default para los grupos de comandos, grupos de
opciones, cajas de edición y cajas de texto.
Para las líneas y formas:
Descripción
0
Transparente
1
Default Solido.
2
---
3
___--__--- (W
4
-_----- (Dash-Dot)
5
-m--w - - (Dash-Dot-Dot)
-
(Dash)
Para un objeto forma;
Valor
Descripción
0
Sin borde.
1
Fijo simple.
2
Fijo tipo dialogo.
3
Modificable
Caption
Especifica el texto desplegado en la forma para un objeto.
Class
Clase de la que proviene el objeto. Puede ser la clase base o una subclase
definida por el usuario.
ClassLibrary
Especifica el nombre del archivo dela biblioteca de clases que contiene la
clase del objeto.
ColorSource
Determina un conjunto de colores para el control:
Valor
Descripción
0
Propiedades del color del objeto.
1
Esquema de colores del formulario.
2
Esquema de la propiedad ColorScheme
3
Esquema Predeterminado
4
Esquema de Windows
Comment
Permite describir brevemente el objeto.
Controls
Es un arreglo para acceder a los controles de un contenedor de objetos. Es
usado acceder a las propiedades de dichos controles.
La forma de utilizarlo es:
ObjetoContenedor.Controls(lndice).Property[ = Expr]
ControlSource
Especifica la fuente de datos a la que va estar ligada un objeto: esta puede
ser:
l
Campo
l
Variable
Al crearse el objeto la propiedad Value siempre tendrá el mismo valor del
campo o de la variable.
DisabledBackColor
y DisabledForeColor
Especifica el color del fondo y el color del primer plano del control cuando el
objeto esta deshabilitado.
Dragicon
Especifica el icon desplegado en una operación de arrastre. El archivo
especificado debe termer la extensión .CUR y estar salvado en formato VGA-Mono
2-Color 32*32.
DragMode
Especifica el modo en que se producirá el arrastre:
Valor
Descripción
0
Manual
1
Automático
Enabled
Propiedad booleana, la cual nos permite inhabilitar (.F.) y habilitar (.T.) el
objeto ante cualquier accón. Si el objeto es un contenedor, los objetos contenidos
quedarán inhabilitados también.
FontBold, Fonfltalic, W y FontUnderline
Valor booleano para habilitar y deshabilitar los estilos: negrita, cursiva,
subrayado y tachado.
FontName
Nos permite seleccionar la fuente.
FontSize
Determina el tamaño de las letras.
ForeColor
Determina el color del primer plano del objeto.
Height
Especifica la altura del un objeto.
HelpContextld
Es un numero de contexto que debe coincidir con el que le otorguemos en el
archivo de ayuda.
Left
Especifica la distancia entre el lado izquierdo del objeto y el lado izquierdo de
su contenedor.
MousePointer
Indica la forma del puntero del ratón cuando se sitúa encima de un objeto.
Predeterminado
3
4
5
6
7
8
9
10
11
12
r-%-j
i.. ...............
I”““““.......:
;+[
..................i
............... .
11 i
i. .............j Icono
:...................I
&J+;
i...................i
........... .
gy
i............
:.................I
i 1 i
i.. ...............i
i”““““........
;\;
\ ................j
:.....................
+-.
i. ...................
I”‘t”‘i
i...........
I’.............I
** :
/iij
.............. .,
I................
pJ
i. ...............;
Name
Nombre del objeto, por el cual se va a referenciar en la programación. Visual
FoxPro asigna a los objetos el nombre de su clase mas un numero consecutivo.
ParentClass
Clase primaria a partir de la cual se ha creado el objeto.
Picture
Representación gráfica del objeto. El archivo debe tener extensión .bmp o .ico.
SpecialEffect
Determina diferentes opciones de formato para un control.
Para los marcos de pagina los valores posibles son:
Valor
Descripción
0
En relieve.
1
Bajo relieve
2
Plano
Para que los anteriores valores, la propiedad Tabs debe estar en .F.
Para los demás controles:
Valor
Descripción
0
3D
1
Normal
StatusBarText
Sirve para mostrar en la barra de estado una descripción del objeto que recibe
el foco.
Tablndex
Contiene el número de orden del objeto según se fue añadiendo a la forma o
al marco de página.
TabStop
Valor booleano que inhabilita o habilita a un objeto a obtener el foco mediante
la tecla Tab, es decir, que si el usuario avanza con tabulador aun objeto con Tabstop
en .F. , este objeto se ignorara y saltará al siguiente.
Sirve para almacenar algún dato necesario para algún programa.
TerminateRead
Si el objeto tiene esta propiedad en .T. el Read activo se cerrará.
ToolTipText
Especifica el letrero que aparece cuando el puntero del ratón se sitúa sobre el
objeto. Para que esto tenga efecto, la propiedad ShowTips del Formulario o Toolbar
a .T.
Top
Es la distancia entre borde superior del objeto y el borde superior del
contenedor.
Value
Especifica el estado de un control. Los siguientes son los tipos de datos que
puede tomar esta propiedad dependiendo del control.
Valor
Descripción
Casilla de verificación
Entero, Lógico, Numérico
Caja combinada
Carácter, Entero, Numérico
Grupo de comandos
Carácter, Entero, Numérico
Caja de edición
Cuadricula
Carácter, Memo
Carácter, Numérico
Cuadro de Lista
Carácter. Entero, Numérico
Botón de opción
Entero, Lógico, Numérico
Grupo de Opciones
Control Numérico
Caja de Texto
Carácter, Entero, Numérico
Entero, Moneda, Número
Cualquiera
Visible
Valor booleano que especifica cuando un objeto esta visible u oculto.
Width
Especifica el tamaño de un objeto expresado en unidades de medida
marcadas por ScaleMode del formulario.
4.2 Eventos comunes a varias clases.
La siguiente es una relación de eventos básicos relacionados con la mayoría
de las clases base.
4.2.1 Creación y destrucción de objetos.
yJ
Cuando
se
crea
la
instancia
de
un
clase
,
se
ejecuta
automáticamente el código asociado a este evento.
Se ejecuta cuando se destruye la variable que contiene al objeto.
DESTROY
* Lanzamiento automático del método INIT
oCliente = CREATEOBJECT( “Cliente” )
* Lanzamiento automático del método DESTROY
RELEASE
oCliente
4.2.2 Carga y descarga de formularios.
Load
Este evento se ejecuta antes de que un formulario o un conjunto de
formularios se haya creado en memoria.
Unload
Este evento ocurre cuando un formulario o un conjunto de estos se
liberan de memoria.
4.2.3 Control de teclado.
KevPress
Detecta la pulsación de cualquier tecla. Averigua su valor y que
teclas de control estaban pulsadas en ese momento
4.2.4 Control de ratón.
g&
Detecta la pulsación del botón izquierdo del ratón sobre un control.
DblClick
Detecta la doble pulsación del botón izquierdo del ratón sobre un
control.
RightClick
Detecta la pulsación del botón derecho del ratón sobre un control.
MouseDown
Detecta la pulsación de cualquier tecla del ratón, pudiendo tener un
mayor control; ya que además permite averiguar que tecla
alternativa estaba presionada:
nButtom
1 botón izquierdo, 2 botón derecho, 4 botón central
nShift
1 Shift, 2 Ctrl, 4 Alr
nXCoorä
nYCoord
Devuelve las coordenadas de la posición actual del
puntero del ratón.
MouseMove
Controla el movimiento del puntero del ratón sobre un objeto
MouseUp
Ocurre cuando se pulsa cualquier botón del ratón sobre un objeto y
después de que se libere la pulsación del botón
4.2.5 Control del foco.
GotFocus
Este evento ocurre cuando se pueden accionar eventos de ese
objeto mediante el ratón o teclado, o sea, recibe el foco.
LostFocus
Ocurre este evento cuando un objeto pierde el foco
4.2.6 Modificaciones.
InteractiveChange
Este evento se dispara cuando el usuario modifica el
contenido de un objeto mediante teclado o ratón.
ProqrammaticChancle
Este evento se acciona cuando el valor de un objeto se
modifica desde el programa
4.2.7 Gestión de errores.
Error
Este evento se inicia cada vez que se produce un error en el objeto que
lo contiene.
4.3 Métodos.
La lista de métodos existentes en la siguiente:
4.3.1 Manejo de objetos.
AddObject
Agrega una instancia de una clase a un a clase
contenedora.
CloneObject
Duplica un objeto completamente incluyendo todas las
propiedades y métodos definidos en éste.
RemoveObject
Borra un objeto contenido en un objeto contenedor. Este
método debe llamarse desde el objeto contenedor
SetAll
Modifica un grupo de propiedades asignando de una vez
un valor a todas ellas
ReadExpression
Devuelve la expresión introducida en una propiedad.
ReadMethod
Devuelve el
texto del método especificado como
parámetro.
Release
Elimina de memoria un objeto .
Reset
Reinicializa el contador de un objeto temporizador
WriteMethod
Remplaza el código asociado con un método o evento con
el que se pasa como parámetro.
4.3.2 Métodos gráficos
&
Dibuja un rectángulo en un formulario.
Circle
Dibuja una forma circular en un formulario.
&
Dibuja líneas en un formulario.
cls
Borra el texto y gráficos definidos en un formulario.
Point
Devuelve los parámetros de color de un punto definido en
un formulario.
Draw
Repinta el contenido de un formulario.
Hide
Oculta un formulario, conjunto de formularios o barra de
herramientas.
Print
Imprime una cadena de caracteres en un formulario.
Pset
Cambia el color de un punto definido en un formulario por
el color de primer plano definido para ese formulario.
Refres h
Repinta el contenido de un formulario actualizando sus
valores.
TextHeiq ht
Devuelve la altura de una cadena de texto presentada .
4.3.3 Manejo de listas
Addltem
Añade un nuevo elemento a un objeto cuadro combinado o
cuadro de lista en una posición de índice determinada.
AddListltem
Añade un nuevo elemento a un objeto cuadro combinado o
cuadro lista en una posición determinada por su
identificador único.
Removeltem
Elimina un elemento de la lista de un cuadro combinado o
cuadro de lista por su índice.
RemoveListltem
Elimina un elemento de las lista de un cuadro combinado o
cuadro de lista por su identificador único.
Clear
Borra el contenido de la lista de un cuadro combinado o
cuadro lista.
IndexToltemld
Devuelve la posición de índice de un elemento a partir de
su identificador único.
ItemlDtolndex
Devuelve el identificador único de un elemento a partir de
su posición de índice.
Requerv
Vuelve a consultar el origen de datos asociado a un cuadro
combinado o un cuadro lista.
4.3.4 Métodos de entorno de datos
OpenTables
Abre todas las tablas especificadas en Entorno de datos.
Close Tables
Cierra todas las tablas especificadas en Entorno de datos.
4.3.5 Métodos de cuadrículas
ActivateCell
AddColumn
DeleteColumn
DoScroll
Activa una celda determinada por los parámetros nFila y
ncolumna.
Añade un nuevo objeto columna a una cuadrícula.
Elimina un objeto columna de un control cuadrícula
Simula el movimiento de la parte visualizada en grid a raíz
de la pulsación del ratón en alguna de las barras de
desplazamiento.
4.3.6 Mover y posícionar objetos
Dock
Apila una barra de herramientas en alguno de los cuatro
bordes de la ventana principal.
Dracl
Inicia o finaliza una secuencia de marcar, arrastrar y soltar.
Move
Mueve un objeto a una nueva posición.
4.3.7 Objetos OLE
DoVerb
Ejecuta un verbo de un objeto OLE
4.4 Clases Base de Visual Foxpro.
Podemos dividir los objetos en dos categorías : Las clases contenedoras y los
controles simples.
Los objetos basados en clases contenedoras son usados para acoger otros
objetos.
4.4.1 Conjuntos de formularios .
Estos acogen a uno o más formularios o incluso barras de herramientas. A la
hora de ejecutar un el conjunto de formularios, se activan todos los formularios
definidos en el mismo.
4.4.2 Formulario.
Los formularios, en orden siguen a los conjuntos de formularios. Dentro de
un formulario es posible definir cualquier objeto. (fig. 4.1)
Fig. 4.1 Formulario
4.4.3 Contenedor
Este tipo de objeto de utiliza para agrupar objetos, siendo más fácil la
manipulación de estos
4.4.4 Marcos de pagina
Permiten visualizar varias páginas de información dentro de un mismo
formulario.
Cada marco de página esta compuesto de páginas. En cada un de las
páginas es donde se van a definir los controles (fig.4.3)
Fig 4.2 Marco de página
4.4.5 Grupo de comandos i
Este tipo de control agrupa dentro de un contenedor varios botones de
comando. Dentro de un grupo de comandos sólo se pueden definir objetos botón
de comando (fig 4.4)
Fig. 4.4 Grupo de comandos
4.4.6 Grupo de opciones
Este control asocia varios botones de opción dentro de un mismo
contenedor. Dentro de un grupo de botones de opción solo se pueden definir
objetos botón de opción (fig.4.5)
Fig. 4.5 Grupo de opciones
4.4.7 Etiquetas !
Se utiliza para visualizar una expresión en el formulario. Su uso más común
es como títulos de campo o títulos de ventana.
Establecer el contenido de una etiqueta
Para establecer el contenido de una etiqueta bata con cambiar el contenido
de la propiedad caption. Cualquier cadena es valida.
Thisform.labell .Caption= “Etiqueta”
Thisform.label2.Caption=Dtoc(Date())
Thisform.label3.Caption=str(2000,4)
Siendo Labell ,..Label3 las propiedades Name de los objetos.
Definiendo posición y tamaño de la etiqueta
Estas propiedades ya la vimos en un tema anterior. (fig.4.6)
Fig.4.6 Propiedades de ajuste de tamaño y posición.
Modificando atributos de la fuente.
Las propiedades para tales efectos son Fontname (seleccionar la fuente),
FontBold
( N e g r i t a ) , F o n t i t a l i c ( C u r s i v a ) , FontStrikeThru ( T a c h a d o ) y
FontUnderline (Subrayado).
Modificando colores y estilo.
Las propiedades BackColor (color de fondo) y ForeColor (color de primer
plano).
El color de fondo se ve afectado por la propiedad BackStyle (estilo del
fondo), puesto que si el estilo del fondo es 0-Transparent (transparente), para
nada va a afectar la propiedad de BackColor. Esta característica es aplicable el
resto de objetos en los que exista la propiedad BackStyle.
La propiedad WordWrap
Además de la propiedad Autosize que ajusta el objeto al contenido de la
propiedad Caption, existe la propiedad WordWrap la cual permite ajustar el
contenido de la etiqueta en varias líneas, si el ancho definido para la etiqueta es
menor que la longitud del texto que contiene.
4.4.8 Cuadro de texto
Este es el control básico utilizado para editar información contenida en
campos de tablas, propiedades o variables (fig 4.7)
Fig. 4.7 Cuadro de texto
Fuente de datos
La propiedad ControlSource se utiliza para indicar al control cual es el
origen de los datos.
En caso de que el origen sea un campo, se aconseja que ésta esté presente
en el objeto Entorno de datos para asegurar que la tabla este disponible en
tiempo de ejecución.
Textl .ControlSource =“Clientes.Nombre”
Value
La propiedad Value guarda el valor que se esta editando. Además puede
utilizarse para inicializar el cuadro de texto con algún valor.
Textl .value=“Hola”
Formatos
La propiedad Format permita modificar el aspecto de los datos visualizados
e introducidos. Consiste en una cadena de caracteres, cada uno de los cuales
tiene una función especifica. Lo que aquí se introduzca afecta a la edición de todo
el cuadro de texto a diferencia de InputMask
Formato
Descripción
A
Solo admite caracteres alfabéticos.
D
Utiliza el formato de datos especificado con SET DATE Para
datos de tipo fecha.
E
Utiliza el formato de datos especificado como SET DATE
BRITISH (dd/mm/aa) para datos de tipo fecha.
K
Marca todo contenido del cuadro de texto cuando este toma el
control.
L
Muestra ceros a la izquierda completando hasta el principio
para datos de tipo numérico.
M
Permite utilizar el cuadro de texto para mostrar múltiples
opciones. Las opciones que se van a visualizar en el cuadro de
texto se almacenan en la propiedad InputMask, utilizando
comas como separador de opciones. Para cambiar de opción
debe pulsar la barra espaciadora y para aceptar los cambios,
pulsar INTRO. Si la propiedad Value se inicializa con alguna
de las opciones, ésta toma el primer lugar.
R
Determina que los caracteres utilizados como máscara de
formato no sean almacenados con el contenido introducido.
!
Convierte a mayúsculas los caracteres alfabéticos.
$
Especifica si se visualiza el indicador de moneda definido por
SET CURRENCY o la configuración que se haya especificado
en la página Regional de la ventana Opciones.
La propiedad InputMask determina cómo se introducen y muestran cada
uno de los caracteres del cuadro de texto. Esta es la diferencia con respecto a la
propiedad Format que afecta a la totalidad del cuadro de texto.
Formato
Descripción
X
Permite la introducción de cualquier carácter.
9
Permite introducir dígitos y signos numéricos (-,f)
#
*
Permite introducir dígitos, espacios y signos numéricos (-,+)
Muestra asteriscos a la izquierda del valor editado.
Determina la posición del punto decimal.
Utilizado para separación de miles.
Format
L
InputMask 999,999
Si el valor introducido es 345, el cuadro de texto muestra 000345. Si se
introduce 1487. el resultado visualizado seria 001,487.
Format
iA
InputMasj
XXXXXXXXXX
En este caso solo se permiten 10 caracteres alfabéticos, que son
automáticamente transformados a mayúsculas.
Cifras Numéricas
Separador decimal
Es separador decimal predeterminado es el (.). De cualquier manera el
comando SET POINT TO nos sirve para especificar cual carácter queremos utilizar
como separador.
SET POINT TO “.”
Separador de miles
El comando para especificar cual es el separador de miles que vamos a
usar es:
SET SEPARATOR TO “,”
Indicador de Moneda
El comando SET CURRENCY sirve para visualizar la el tipo de moneda
que se esta visualizando. Ajusta dos parámetros:
l
l
El símbolo o cadena de caracteres utilizado como indicador de moneda.
La posición del indicador
SET CURRENCY TO “$”
SET CURRENCY RIGHT
Introducción de contraseñas
La propiedad PasswordChar
Se utiliza para enmascarar la entrada de
datos por parte del usuario. En esta propiedad se especifica el carácter que se va
a mostrar. La propiedad Value contiene la información que se ha introducido
realmente.
4.4.9 Cuadro de edición i
Este tipo de control se usa para la edición de campos memo. Es un
pequeño procesador de texto. Dentro de este es posible realizar las tareas más
comunes de un procesador de texto como son: marcar texto, moverlo, eliminar el
mismo. Como el texto puede ser grande, es posible activar la barra de
desplazamiento vertical para acceder a la totalidad del mismo (fig. 4,8)
Fig. 4.8 Cuadro de Edición
Barra de desplazamiento.
La barra de desplazamiento vertical permite ver todo el texto introducido en
el cuadro de edición. El texto introducido se ajusta horizontalmente, por lo que no
es necesaria I la barra de desplazamiento horizontal. La propiedad que controla la
visualización de la barra de desplazamiento vertical es la propiedad ScrollBars.
Determinar la longitud máxima del texto introducido
A pesar de que los campos memo no tienen una limitación fija en su
contenido, se pude establecer un contenido limitado por la propiedad MaxLength.
De esta forma sólo se puede introducir el número de caracteres especificados por
esta propiedad.
Permitir el uso de TAB en un cuadro de edición
La tecla TAB se utiliza para cambiar el foco de lectura de un control al
siguiente. Sin embargo esto se puede alterar y permitir que se puedan introducir la
tecla TAB, la propiedad encargada de controlar esta característica es AllowTabs.
Cuando esta propiedad tiene .T. para pasar el foco de lectura al siguiente control
se utiliza la combinación de teclas CTRL. + TAB.
4.4.10 Botones de comando
Se utilizan los botones de comando para iniciar acciones tales como cerrar
una ventana, salir de un programa imprimir un informe, etc. (fig. 4.9)
i. .
.
.
.
.
.
.
.
.
.
Fig, 4.9 Botón de comandos
Tipos de botones de comando
Se pueden definir tres tipos de botones de botones de comandos. Por su
aspecto. El primero solo contiene texto, definido por la propiedad Caption. El
segundo tipo combina texto y gráficos (.BMP, .ICO). La propiedad Picture es en
donde se carga el archivo imagen. El tercer tipo de botones solo muestra un
gráfico .
Existe una tercera propiedad asociada, DownPicture.
Esta propiedad
contiene el nombre del archivo de la imagen mostrado cuando se presiona el botón
de comando.
Existe una cuarta propiedad que reviste de importancia cuando el botón esta
desactivado. Para cambiar la imagen cuando ocurre esta circunstancia se utiliza la
propiedad DisabledPicture.
Mostrar utilidad del comando
Dado que es posible definir botones de comando con imágenes únicamente,
puede que el usuario necesite
mostrar acerca de la utilidad del botón. La
propiedad ToolTipText contiene el texto que se muestra cuando el ratón se sitúa
sobre el botón.
Otras propiedades
La propiedad Default definida en un botón de comando permite que, al
pulsar ENTER en cualquier control del formulario, cambie el foco a éste.
La propiedad Cancel permite realizar una acción similar a la anterior, solo
que ocurre con la tecla ESC.
Usualmente se utilizan estas dos propiedades definidas en botones de
comando: Aceptar y Cancelar.
4.4.11 Grupo de comandos 1
El grupo de comandos se utilizan para relacionar dentro de un mismo
contenedor varios botones de comando. De esta forma se pueden manejar
globalmente desde el propio contenedor o individualmente desde cada botón de
comando (fig.4.10)
Fig. 4.10 Grupo de comandos
En la propiedad
ButtonCount
se guarda el número de botones de
comando definidos dentro de este grupo de comandos.
Para acceder a cada uno de los botones de comando se puede utilizar la
propiedad Buttons. Esta propiedad esta estructurada en forma de- arreglo,
conteniendo cada índice una copia del objeto botón de comando.
Edición de objetos contenedores
Para acceder a modificar un objeto contenedor primero debemos estar en
modo edición. Para entrar en modo de edición hay que marcar el objeto, y
presionar el botón secundario del ratón , seleccionando la opción Edit (editar).
También es posible acceder a los objetos desde la ventana Propiedades
seleccionándolo desde lista de objetos definidos.
4.4.12 Casilla de verificación i
Suele utilizarse las casillas de verificación para representar y modificar
valores lógicos (fig. 4.11)
Fig 4.11 Casilla de verificación
Estados Posibles
Una casilla de verificación admite dos estados básicos. Cuando está
seleccionada, la propiedad Value es .T. ocurre lo contrario cuando es falso .F.
Las casillas de verificación pueden tener un tercer estado NULL y es
cuando la casilla toma la apariencia sombreada, indicando que no se puede tomar
ninguno de los dos estados.
Tipos de casillas de verificación
Existen 3 tipos de casillas de verificación en cuanto a su aspecto visual.
Son: texto, imagen y texto, y sólo gráficos
.-~
4.4.13 Cuadro de lista
Se utiliza este tipo de controles para visualizar una serie de elementos (fig.
4.12)
Fig 4.12 Cuadro de Lista
Origen de los datos.
Las propiedades RowSourceType
y RowSource
determinan entre las dos
el tipo de datos mostrados y el origen de los mismos.
Origen
RowSourceType
Descripción
=0
No existe una relación directa entre el
cuadro de lista y el origen de los datos.
RowSource=“”
cuadro de lista y el origen de los datos.
Para manejar los elementos de la Isita
se utilizan los métodos Addltem y
Removeltem.
RowSourceType
=1
Despliega los elementos contenidos en
una cadena de texto separados por
RowSource=“Opciónl ,Opcion2,...”
comas cada uno de ellos.
RowSourceType =2
Despliega en cada columna el
RowSource=“cAlias”
contenido del campo de una tabla. El
número
de columnas presentado
depende del
valor contenido en
ColumnCount. La presentación de
campos se inicia a partir del primero de
la tabla y siguientes hasta completar el
número de columnas especificadas.
Determina que los datos visualizados
en cada columna provienen de un
RowSourceType =3
cursos creado con una sentencia SQL.
RowSource=” SELECT * FROM”
La sentencia contenida en RowSource
se evalúa en tiempo de ejecución.
Como resultado de esta consulta se
obtiene un cuadro de lista con tantas
columnas como
campos
se han
seleccionado mediante el comando
Select.
Este caso es similar al anterior, solo
que
RowSourceType = 4
el
origen
de
la
consulta
se
establece a partir de un archivo con
RowSource=”
consulta.QPR”
Archivo
de
extensión .QPR. Por tanto, se definen
tantas
columnas
como
campos
resultantes tenga la columna
Muestra el contenido de una matriz. Se
muestran
RowSourceType =5
tantas
columnas
como
dimensiones tenga la matriz.
RowSource=“aMatriz”
Despliega el contenido de cada uno de
RowSourceType
los campos
=6
especificados por la
propiedad RowSource. Debe indicarse
RowSource=”
cAlias.Campol,
Campo2,..”
el alias al cual pertenecen cada uno de
los campos.
Los cuadros de lista creados con esta
característica
RowSourceType =7
muestran
los
archivos
contenidos en un directorio, de acuerdo
RowSource=”
ComodínArchivos”
al patrón especificado en la propiedad
RowSource
El cuadro de lista muestra la estructura
de la tabla especificada en la propiedad
RowSourceType =8
RowSource.
RowSource=” cArchivoDBF”
Caso 0
ThkRowSourceType
=0
This.AddItem(“Elementol”)
This.Addltem(“Elemento 2”)
This.AddItem(“Elemento3”)
This.AddItem(“Elemento 4”)
This.Addltem(“Elemento 5”)
This.Addltem(“Elemento 6”)
This.Addltem(“Elemento 7”)
This.AddItem(“Elemento 8”)
This.Addltem(“Elemento 9”)
Caso 1
This.RowSourceType = 1
This.RowSource = .“ Elemento 1, Elemento 2, Elemento 3 , Elemento 4,“+;
“Elemento 5 , Elemento 6, Elemento 7, Elemento 8,“+;
“Elemento 9”
Caso 2
This.RowSourceType=2
This. RowSource = “Clientes”
Caso 3
This.RowSourceType=3
This.RowSource= “SELECT * FROM Clientes INTO CURSOR Curcli”
Caso 4
This.RowSourceType=4
This.RowSource = “Selcli. QPR”
Caso 5
Declare Thisform.aMatriz[lO]
Thisform.aMatriz[l]
= “Elemento 1”
Thisform.aMatriz[2] = “Elemento 2”
Thisform.aMatriz[3] = “Elemento 3”
Thisform.aMatriz[4] = “Elemento 4”
Thisform.aMatriz[S] = “Elemento 5”
Thisform.aMatriz[G] = “Elemento 6”
Thisform.aMatriz[7] = “Elemento 7”
Thisform.aMatriz[8] = “Elemento 8”
Thisform.aMatriz[S] = “Elemento 9”
Caso 6
This.RowSourceType=6
This.RowSource=“Cliente.Nombre”
Caso 7
This.RowSourceType= 7
This.RowSource = “*.*”
Caso 8
This.RowSourceType=8
This.RowSource=“CJientes”
Manejo de múltiples columnas
Las tres propiedades relacionados con el manejo de múltiples columnas en
listas son ColumnCount, ColumnWidths y ColumnLines.
La
propiedad
ColumnCount
determina el número de columnas
desplegadas en un cuadro de lista.
0
ColumnCount >=l. Se visualizan tantas columnas como sean necesarias.
l
ColumnCount=O. Predeterminado, muestra siempre la primera columna del
origen de los datos.
La propiedad ColumnWidths contiene una cadena de texto que define el
tamaño de cada una de las columnas desplegadas en la lista.
This.ColumnWidths=“l20,
120”
Por último la propiedad
ColumnLines
indica si se han de mostrar
líneas que separen las columnas.
This.ColumnCount=2
Th¡s.ColumnW¡dths=“120,120”
This.ColumnLines=.T.
This.RowSourceType=l
This.RowSource = “Elemento 1, Elemento 2, Elemento 3 , Elemento 4,“+;
“Elemento 5 , Elemento 6 , Elemento 7 , Elemento 8,“+;
“Elemento 9“
(fig. 4.13)
Fig, 4.13 Desplegando dos columnas
Reordenar elementos en un cuadro de Lista
Cuando la RowSourceType
está establecida en algunos de los
valores 0 o 1, es posible reordenar los elementos visualizados en el cuadro de
lista. Para mover la posición de cualquier elemento hay que marcar en el botón de
comando situado al inicio de cada línea y mover el elemento hasta su nueva
. .I
posiclon. La propiedad encargada de habilitar esta posibilidad se llama
MoverBars (fig.4.14).
This.MoveBars = .T.
This.RowSourceType = 0
This.AddItem(“Elemento1”)
This.Addltem(“Elemento 2”)
This.AddItem(“Elemento3”)
This.Addltem(“Elemento 4”)
This.Addltem(“Elemento 5”)
This.AddItem(“Elemento 6”)
This.Addltem(“Elemento 7”)
This.Addltem(“Elemento 8”)
This.Addltem(“Elemento 9”)
Fig. 4.14 Cuadro de Lista con MoveBars = .T.
Multiselección de elementos
Otra característica interesante es la posibilidad de marcar varios elementos en un
cuadro de lista. La propiedad MultiSelect se encarga de estas de esta
característica (fig. 4.15)
This.MultiSelect = .T.
This.RowSourceType = 0
This.Addltem(“Elementol”)
This.Addltem(“Elemento 2”)
This.Addltem(“Elem&to3”)
This.Addltem(“Elemento 4”)
This.Addltem(“Elemento 5”)
This.AddItem(“Elemento 6”)
This.AddItem(“Elemento 7”)
This.AddItem(“Elemento 8”)
This.AddItem(“Elemento 9”)
Fig. 4.15 Cuadro de Lista con MultiSelect=.T.
Elemento Elegido
La propiedad Value contiene siempre el valor que se ha elegido en la
primera columna del cuadro de lista, pero en un cuadro de lista puede haber varias
columnas, como ya hemos visto. Las propiedades BoudColumn
y Value en
conjunto nos dan la solución.
La propiedad BoudColumn indica cuál de las columnas definidas en un
cuadro de lista se asocian con la propiedad Value. Cuando se elija un elemento
del cuadro de lista, el contenido de la fila situada en la columna especificada por
BoundColumn se almacena en Value (fig. 4.16)
This.ColumnCount =2
This.ColumnWidthd = “120,120”
This.ColumnLines=.T.
This.RowSourceType=2
This.RowSource=“Ejem”
This.BoundColumn=2
Fig. 4.16 Cuadro de lista con BoundColumn = 2
4.4.14 Cuadro Combinado
Se utilizan los cuadros combinados para presentar una sola opción de las
contenidas en una lista . Para elegir un elemento de la Isita contenida en un uadro
combinado se debe presionar en el botón de comando situado en el mismo control
a la derecha o bien introducir el elemento mediante el teclado. Si esta activa la
búsqueda incremental, la lista se irá posicionando en el elemento deseado (fig
4.17)
Fig. 4.17 Cuadro combinado
Tipo de cuadros combinados
Se pueden definir dos tipos de cuadros combinados principalmente,
basándose en el contenido de la propiedad Style
l
El primer estilo 0 muestra un cuadro de texto desplegable, que permite
teclear la opción 0 seleccionarla.
l
El segundo tipo no permite la edición en el cuadro de texto, sólo la selección
de la opción.
Caso 0 (fig 4.18)
ThisForm.Combol .RowSourceType = 0
ThisForm.Combol .Addltem(“Elemento 1”)
ThisForm.Combol .Addltem(“Elemento 2”)
ThisForm.Combol .Addltem(“Elemento 3”)
ThisForm.Combol .Addltem(“Elemento 4”)
ThisForm.Combol .Addltem(“Elemento 5”)
ThisForm.Combol .Addltem(“Elemento 6”)
ThisForm.Combol .Addltem(“Elemento 7”)
ThisForm.Combol .AddItem(“Elemento 8”)
ThisForm.Combol .Addltem(“Elemento 9”)
ThisForm.combol .Style = 0
Fig. 4.18 Caso 0
Caso 2 (fig. 4.19)
ThisForm.Combol .RowSourceType = 0
ThisForm.Combol .Addltem(“Elemento 1”)
ThisForm.Combol .AddItem(“Elemento 2”)
ThisForm.Combol .Addltem(“Elemento 3”)
ThisForm.Combol .AddItem(“Elemento 4”)
ThisForm.Combol .Addltem(“Elemento 5”)
ThisForm.Combol .Addltem(“Elemento 6”)
ThisForm.Combol .Addltem(“Elemento 7”)
ThisForm.Combol .AddItem(“Elemento 8”)
ThisForm.Combol .Addltem(“Elemento 9”)
ThisForm.combol .Style = 2
Fig 4.19 Caso 2
Búsqueda Incrementa1
La Búsqueda de elementos mediante el teclado sólo esta disponible cuando
la propiedad Style=2 . Existen dos formas de establecer el funcionamiento de la
búsqueda dentro de un cuadro combinado y un cuadro de lista. Esto depende de la
propiedad IncrementalSearch.
Cuando el valor de esta propiedad es .T., la búsqueda de elementos se
hace cuando se ha dejado de pulsar la ultima tecla y ha pasado cierto tiempo sin
que se haya pulsado alguna otra.
Si la propiedad es .F. la búsqueda se hace después de cada pulsación de
tecla.
4.4.15 Grupo de opciones
Este control se utiliza para seleccionar una opción entre varias (fig. 4.20)
f:
.
:
: ,,,,.**..,,,.,,
<,....n,..... .,....,en
;
-:
:
$4 *i..,r.*..n.* . . ..rr&
Fig. 4.20 Grupo de opciones
Definir el número de opciones
El número de opciones definidas depende de la propiedad ButonCount.
Cuando modifica esta propiedad se añaden o quitan botones.
4.4.16 Control Numérico
Se utilizan este tipo de objetos para elegir un valor dentro de un rango
numérico (fig. 4.21).
.
:
! :
f
i:.,...
! :
.:
.
. .
:
. .
.
:
..
.
.*
‘:.
..
‘:
.:
:
.y
. . . . . . 2.:
:
.:
..
:’
Fig. 4.21 Control Numérico
El valor se pede incrementar y decrementar pulsando los pequeños botones
situados al lado derecho del control.
I
Incrementos y decrementos .
El valor del decremento o incremento esta determinado por la propiedad
Interval.
Límites
Se pueden especificar los límites entre los cuales se van a mover los
valores. Dependiendo de que los valores se introduzcan por teclado o ratón son las
propiedades que se usan.
En cuanto a la introducción
KeyboardHighValuey
de datos por teclado, las propiedades
KeyboardLowVaIue
controlan los límites Superior e Inferior
por teclado.
Si utilizamos el ratón ,
SpinnerLowValue,
las propiedades son SpinnerHighValue y
Superior e Inferior respectivamente.
Add Object spinner As spinner With;
FontBold=.T., ;
FontName=“Ms San serif’, ;
FontSize = 9, ;
Height = 25, ;
Increment = 1000.00, ;
lnputMask=“9,999,999”, ;
KeyboardHighValue=l000000,
;
KeyboardLowVaIue=lOOO, ;
Left = 156, ;
SpinnerHighValue=lOOOOO,
;
SpinnerLowValue=lOOO, ;
StatusBarText = “ Modifica el importe”, ;
TooTipText = “Modifica el importe”, ;
Top = 72, ;
Width =85, ;
Format=“k”;
_
4.4.17 Cuadrículas
Maneja diversas filas y columnas de datos procedentes del contenido de
una o mas tablas. Este objeto es un contenedor de objetos columnas. Cada objeto
contiene una cabecera y un objeto control de edición. Este objeto control puede ser
una casilla de verificación, cuadro combinado, botón de comando, cuadro de
edición,
cuadro de lista, grupo de opciones, control numérico, otra cuadrícula,
cuadro de texto o contenedor (fig. 4.22)
Fig 4.22 Cuadrícula
Origen de los datos
Las propiedades RecordSourceType y RecordSource determinan el tipo
de datos mostrado y el origen de estos respectivamente. Cuando la propiedad
ColumnCount
esta con el calor a -1, la cuadrícula crea tantas columnas como
campos definidos en la tabla, tomado los títulos de cada columna del título
asociado al campo de la tabla.
Origen
Descripción
RecordSourceType = 0
-
Abre la tabla especificada en la
propiedad RecordSource.
RecordSourceType = 1
Especifica un alias de tabla.
RecordSourceType = 2
Pide el origen asociado a la cuadrícula
en tiempo de ejecución.
RecordSourceType = 3
El origen proviene de una consulta . En
la propiedad
RecordSource
debe
especificarse el nombre del archivo
.QPR
Aspecto de la cuadrícula
El aspecto de la cuadrícula depende de las siguientes propiedades:
Propiedad
Descripción
DeleteMark
Determina se va a mostrar la marca de borrado en cada fila.
GridLineColor
Color empleado en las líneas separadoras de celdas
GridLínes
Indica si se muestran las líneas horizontales o verticales
separadoras de celdas
GridLineWidth
Ancho en puntos de las líneas separadoras de celdas.
HeaderHeig ht
Altura de la cabecera de la columna
HighLight
Determina que la celda que contiene el foco de lectura esté
seleccionada.
RecordMask
Determina si la columna con el indicador de registro se
visualizara en la cuadrícula.
RowHeight
Altura de las filas.
ScrollBars
Determina si las barras de desplazamiento aparecerán en
la cuadrícula.
Particiones
Cuando se trata de mostrar mucha información en poco espacio, muchas
veces limitado, se utilizan particiones para mostrar el mayor número de
información posible.
Propiedad
Descripción
Panel
Número de panel activo en un objeto cuadrícula
PanelLink
Indica si los paneles derecho e izquierdo de un objeto
cuadrícula estarán enlazados cuando se divida este.
Partition
Indica si un objeto cuadrícula está dividido en dos paneles.
View
Determina el tipo de vista para una cuadrícula. Si se han
definido particiones, podemos definir el aspecto de cada
una de ellas.
Celda activa
Para ver la posición de una celda activa, existe un serie de propiedades
relacionadas. Pueden mostrar la posición de la fila y columna, o la posición de la
celda activa.
Propiedad
Descripción
ActiveRow
Contiene el número de fila y columna activas en la
ActiveColumn
cuadrícula.
RelativeRow
Estas propiedades contiene el número de fila y columnas
RelativeColumn
relativas a la parte visible de la columna.
Columnas
Cuando se crea una nueva columna en una cuadrícula se crean
automáticamente dos objetos dentro de misma: uno es la cabecera, que sirve para
identificar la columna, y el otro, un cuadro de texto, utilizado como control de
edición, o cualquier otro control valido.
El campo que se va a editar depende de la propiedad ControlSource.
La propiedad Bound asegura que esta situación se aplique a todos los
controles contenidos en la columna. Si el contenido de la propiedad Bound es .T.
no se permite modificar la propiedad ControlSource independientemente por cada
control contenido. En caso contrario .F., el control contenido en el objeto columna
puede adoptar un origen de datos distinto.
También es posible impedir la edición de un control mediante la propiedad
RadOnly.
La dos propiedades que permiten que el usuario afecte el tamaño y la
posición de cada columna son: Movable, determina que el usuario pueda mover la
columna y Resizable, impide el cambio de tamaño en la anchura de la columna.
Control de Lectura en una columna
Además del cuadro de texto como control de lectura de una columna,
también podemos tener: casilla de verificación, cuadro combinado, botón de
comando, cuadro de edición, cuadro de lista, grupo de opciones, control numérico,
otra cuadrícula, cuadro de texto o contenedor.
Para insertar un control distinto al cuadro de texto incorporado por default,
se hace lo siguiente:
1. Entrar al modo edición de objetos contenedores visto anteriormente.
2 . Elegir la columna donde se desea insertar el nuevo control de ediciórì.
3 . Elija el control de la barra de herramientas e insértelo en la columna.
4. Para activar el nuevo control de edición de datos cuando se ejecute la
cuadrícula, es necesario cambiar la propiedad CurrentControl por el
nombre del nuevo control.
5. Cambiar el valor de la propiedad Sparse , que indica que la columna
mostrará como visualizador y editor,
CurrentControl.
el control establecido en
Cabeceras
Las cabeceras de columnas se comportan como cualquier objeto etiqueta y
se utilizan para identificar los datos editados en la columna. Cuando se
establece ColumnCount
= -1 en la cuadrícula y se especifica una tabla
perteneciente a una base de datos, el contenido de la propiedad Caption
coincide con el contenido de la propiedad Encabezado de cada campo.
Relaciones
Cuando se establece una relación entre dos tablas, denominamos a la tabla
padre como aquella que contiene la expresión con la que vamos a relacionar
una segunda tabla, denominada tabla hija. De esta forma, cuando se desplace
el puntero de registro en la primer tabla, en la segunda se mostraran aquellos
registros que coincidan con la expresión relacional.
Propiedad
Descripción
Link Master
Nombre de la tabla hija
ChilOrder
Orden establecido en la tabla secundaria. Esta es al tabla
de origen de datos de la cuadrícula. La expresión con la.
que se ha construido este orden coincide con la expresión
relacional.
RelationalExpr
Expresión relaciona1 que une a las dos tablas
4.4.18 Imagen i. . . . . . . . .._
Inserta una imagen con extensión .BMP o icono .ICO en el formulario.
Definir el origen y el aspecto de la imagen
El gráfico mostrado depende del valor de la propiedad Picture.
Para delimitar los bordes de la imagen se puede dar valor a la propiedad
BorderStyle para poder visualizar los límites de la imagen.
La imagen se puede ajustar en el espacio asignado, con la propiedad
Stretch.
Valor
Descripción
0 - Recortar
Mantiene las dimensiones originales de la imagen
1 - Isométrico
Acomoda la imagen al espacio asignado, manteniendo
proporcionalmente sus dimensiones originales.
2 - Estirar
Ignora las proporciones originales para acomodarse
totalmente al espacio asignado
;
4.4.19 Cronómeto i
Se utiliza el cronómetro para ejecutar procesos a intervalos regulares de
tiempo. Tiene utilidad para actualizar formularios cada cierto tiempo, incorporar
relojes o cronómetros de control de tiempo y otras aplicaciones.
Determinar el funcionamiento de un crónometro
La propiedad que determina el intervalo de tiempo entre cada control de
tiempo se denomina Inthval. El cronometro mide el tiempo en milisegundos.
Cada vez que se cumple el intervalo especificado en la propiedad Interval,
se procede a la llamada del evento Timer() , que es el que realmente se va a
encargar de realizar las acciones a intervalos fijos.
Cuando se desea paralizar el cronómetro se pone la propiedad Enabled en
.F. , cuando se restablece otra vez el cronómetro continua su cuenta. Por el
contrario el método Reset() hace que la cuenta empiece desde cero.
4.4.20 Marco de página
Cuando la información para capturar es mucha y no cabe en el formulario,
se recurre a la inserción de objetos marco de página.
Un marco de página esta compuesto de varias páginas; cada una de ellas
puede contener distintos controles (fig. 4.23)
Fig 4.23 Marco de página
Funcionamiento de un marco de página
Cuando se ejecuta un formulario conteniendo un marco de página, para
cambiar de página activa, basta con pulsar en la pestaña superior que identifique
la página. La página activa en un marco de página se guarda en la propiedad
ActivePage. Del mismo modo, en tiempo de diseño, el número de páginas activas
se determina con la propiedad PageCount.
Determinado el aspecto gráfico de marco página
Las pestañas, también denominadas Tabs, pueden estas visible o no,
dependiendo del valor de la propiedad Tabs.
Otra de las características de los marcos de páginas, es que cuando una
página no puede mostrar la totalidad de los títulos de todas las páginas, recorta
estos con el fin de mostrar todas las páginas. También es posible cambiar esta
especificación haciendo que se visualice la totalidad del titulo. Entonces la páginas
se apilan una de tras de otra. Esto se hace con la propiedad TabStretch.
:
Fig. 4.24 Propiedad TabStretch
La propiedad TabStyle nos da la posibilidad de ponerle alineación a los
títulos de las pestañas. TabStyle: O-Justificado. l=No Justificado.
4.4.21 Control contenedor OLE
Este tipo de controles permiten incrustar o vincular cualquier tipo de objeto
OLE en un formulario, desde un documento Word a un control Active X, pasando
por archivos multimedia AVI o BMP.
Determinar el tipo de objeto
Como información básica, al insertar un nuevo control es necesario
especificar que tipo de objeto es y su origen.
Opción
Descripción
Crear nuevo
Crea un nuevo objeto incrustado en formulario.
Crear desde archivo
Inserta el archivo especificado en el formulario. El
archivo puede estar asociado al control de dos
formas:
Vincular: Cuando se activa la casilla de verificación
vínculo, se crea un enlace entre el control OLE y el
archivo
origen.
Las actualizaciones en ambos
sentidos se realizan de forma automática
Incrustar: Si se elige esta opción (default), el
archivo queda
incrustado creando una copia
completa del mismo en el control.
Insertar Control
Ciando
se elige esta opción visualizamos un cuadro
de lista que contiene todos los controles Actives
registrados en Visual Foxpro.
4.4.22 Control OLE dependiente
La utilización de controles OLE dependientes se delimita para mostrar o
editar el contenido de un campo de tipo general perteneciente a una tabla.
4.4.23 Líneas i.
Este tipo de controles son utilizados para dibujar líneas de cualquier tipo y
figuras geométricas cerradas (cuadradas o circulares).
En cuanto a los objetos línea, existen dos parámetros importantes a tener
en cuenta. La propiedad BorderWidth que determina el ancho de la línea, esta
especificada en píxeles.
La segunda propiedad es LíneSlant que determina la
inclinación de la línea, de izquierda a derecha o viceversa.
Los objetos de la clase Shape puede formar figuras rectangulares, así como
circulares. Todo ello depende de la propiedad Curvature. Esta propiedad define
la curvatura de los cuatro bordes de una figura rectangular, que va desde 0 hasta
99. Cuanto más se acerca al máximo, es más la definición circular.
V PROGRAMACIÓN ORIENTADA A FORMULARIOS
Los Formularios se utilizan para desplegar e introducir información y son el
medio de comunicación entre el usuario y los datos.
Un formulario está basado en la clase Form, esto quiere decir que tiene
una serie de propiedades y métodos asociados de forma inmediata.
Dentro de un formulario se puede insertar cualquier objeto basado en una
clase base de Visual FoxPro o cualquier objeto OLE reconocido por Visual
FoxPro.
También los formularios llevan asociado un objeto entorno de datos. Este
objeto guarda referencias a tablas que van a ser el origen de datos de los
controles. De esta forma, cuando se ejecuta un formulario se abren las tablas
especificadas en le entorno de datos y también se crean las relaciones que se
definieron entre ellas.
5.1 Apariencia del diseñador de formularios
Se van a distinguir cuatro ventanas:
a)Ventana de diseño de formularios (fig. 5.1)
Fig. 5.1 Ventana de Diseiio de Formularios
b) Ventana de eventos, métodos v propiedades (fig. 5.2)
Fig. 5.2 Ventana de eventos, métodos y propiedades
c) Ventana de Códino (fig. 5.3)
d) Entorno de datos (fig. 5.4)
Fig. 5.4 Ventana de entorno de datos
e) Ventana de C&troles (fig. 5.5)
Fig 5.5 Ventana de controles
5.2 Opciones de formulario
Mediante esta página se puede
configurar el entorno de diseño de
formularios. Se accede a ella desde la opción Options (opciones) situada en el
menú Tools (herramientas). Si se realizan cambios en esta página y se
establecen predeterminados, cada vez que se arranque Visual FoxPro
se
recuperará la configuración aquí descrita (Fig. 5.6)
Fig 5.6 Opciones de Formulario
a)m (cuadrícula). Este conjunto de opciones afecta a la disposición de la
cuadrícula guía en la ventana de díseiio.
l
Grid lines ( Líneas de cuadrícula). Activa o desactiva la visualización
de la cuadrícula. La cuadrícula consiste en las líneas punteadas
horizontales y verticales que cubren al formulario.
Snap to grid (Forzar a la cuadricula). Activa el ajuste automático de
l
los objetos a la cuadrícula. Cada vez que se redimensione o mueva
un objeto lo hará en incrementos especificados en el espaciado
horizontal y vertical.
l
Horizontal Spacing pixels (Espaciado horizontal pixeles): Espaciado
horizontal de la cuadrícula.
Vertical Spacing pixels (Espaciado Vertical pixeles): Espaciado
l
vertical de la cuadrícula.
b) Show position (mostrar posición). Muestra en la barra de estado la posición del
objeto y sus dimensiones.
c) tab ordering (orden de tabulación). Especifica si es posible usar la
combinación Shift + Clic para alterar el orden de objetos en un formulario.
d) Scale units (unidades de escala). Indica la escala en la que se visualizara la
cuadrícula.
e) Maximum design area (área de diseno máxima). Este parámentro es muy útil
para definir para qué tipo de resolución se va a desarrollar la aplicación
f) Template classes (clases de plantilla.). Para agilizar la tarea de generar
formularios, es posible especificar una clase perteneciente a una biblioteca de
clase visuales como base para crear nuevos formularios.
l
Form Set (conjunto de formularios). Elige un conjunto de formularios
procedente de una biblioteca de clases.
l
Form (formulario). Elige una clase basada en Form como plantilla
para la creación de nuevos formularios.
g) Builder lock. Mediante esta opción, cada vez que se anade un nuevo
control al formulario, se llama al generador correspondiente a su clase.
h) Prompt to save changes before running form (Avisar para guardar cambios
antes de ejecutar el formulario.
5.3 La ventana propiedades
La ventana propiedades permite modificar las propiedades de cada objeto.
Esta ventana esta compuesta de cinco páginas.
Para modificar el valor de cualquier propiedad, hay que seleccionar la
propiedad , y a continuación se puede modificar directamente el dato o elegirlo de
la lista de valores predeterminados.
Opciones
Cada vez que se pulsa el botón derecho sobre esta ventana, se muestra
un menú con las siguientes opciones:
Propierty descriptions (descripciones de las propiedades). Muestra o no, en
la parte inferior de la ventana, la descripción correspondiente a la propiedad,
evento o método que está seleccionado.
Always on Top (siempre visible). Impiden que otras ventanas la oculten al
situarse
encima.
Non-Default
propierties
only (~610
propiedades no predeterminadas). Opción
muy interesante si se pretende descubrir que métodos tienen código o qtié
propiedades han sido alteradas.
Small font, Médium font, Large font (fuentes: pequenas, medianas, grandes).
Elige el tamaño de la fuente utilizada en la lista de propiedades, eventos y
métodos.
Lista de objetos
En la lista aparecen todos los objetos definidos dentro del formulario
(fig.5.7).
Fig. 5.7 Lista de objetos
Páginas de propiedades y métodos
Cada páginas esta compuesta por una línea de dos columnas. La primer
columna muestra una lista de propiedades y métodos definidos par un control
determinado. La segunda muestra el valor que tienen las propiedades.
La paginas que componen esta ventana son las siguientes (fig. 5.8) :
iAn _ l..c!dH
Fig. 5.8 Páginas de la ventana de propiedades
Página
Descripción
All (Todo)
En esta página se encuentran todas las propiedades,
eventos y métodos del objeto seleccionado.
Data (Datos)
Aquí están todas las propiedades relacionadas con el
manejo de la dato.
Methods (métodos)
Lista de eventos y métodos pertenecientes a este
objeto. La selección de cualquiera de éstos hace que
se abra la ventana de código.
Layout (distribución)
Propiedades que afectan la visualización del .objeto
como: color, estilo, tamaño, etc.
Otros (other)
En esta pagina se visualiza la clase en la que está
basado el objeto, el nombre del mismo, o el orden que
ocupa. Al final se muestran las propiedades definidas
por el usuario.
5.4 Tipos de ventana
Al nivel formulario existe una propiedad llamada BorderStyle que defibe
el aspecto de la ventana de un formulario.
l
0 - Sin borde. No muestra ningún tipo de borde por lo tanto no es posible
mover ni cambiar el tamaAo de la ventana.
0
1
- Borde sencillo. Este borde no permite cambiar el tamafio de la
ventana.
l
2 - Borde doble ajustable. Este tipo de ventana permite cambiar el
tamaño, maximizarla 0 minimizarla.
0
3 - Borde doble fijo. No permite modificar el tamaño de la ventana.
En ocasiones es necesario que el usuario emita una respuesta y se le impida
activar cualquier otra ventana o cualquier opción del menú. Este tipo de ventanas
se llama de tipo Modal. La propiedad en cuestión es WindowType y permite los
valores:
l
0 - Sin modo. Permite acceder a cualquier otra ventana.
l
1 - Modal. No permite activar otra ventana hasta que no se cierre ésta.
La propiedad AlwaysOnTop, que, en caso de tener valor .T. impide que
otros formularios lo oculten.
5.5. Controles de la barra de título
Como estándar de Windows las ventanas de VisualFoxpro
siguientes
contienen las
propiedades:
Propiedad
Descripción
Closable
Muestra el icono de cierre de ventana y la opción
Cerrar del menú control.
ControlBox
Indica se ha de mostrar en la parte izquierda de la
barra de título el menú control de ventana.
HalfHeígtCaptíon
Establece la altura de la barra de título a la mitad
establecida en el entorno de Windows.
Icon
Archivo .ICO mostrado en la parte superior izquierda.
MaxButton
Indica si se ha demostrar el botón maximizar en la
barra de título y en el menú control.
MinButton
Hace lo mismo que la propiedad anterior solo que con
el botón de minimizar.
Movable
Impide el movimiento del formulario desde el menú
control o la barra de título en caso de tener .F.
WatsThisButton
Indica si se ha de mostrar el botón ? en la barra de
título.
5.6 Almacenamiento en Buffer.
La propiedad BufferModeOverride del entorno de datos, establece con
que sistema de almac.enamiento
en buffer se abrirán las tablas utilizadas en el
formulario.
Valor
Descripción
0
Ninguno
1
Pesimista
2
Optimista
5.7 Sesión de datos
La propiedad de DataSession es fundamental en la manipulación de
varios formularios en la pantalla. Cada formulario puede tener asociada una
sesión de datos privada, de esta forma es poco probable que lo que ocurra
entorno a un formulario modifique el resto de la aplicación.
La propiedad puede tomar dos valores:
1 Sesión predeterminada de datos
2 Sesión privada de datos
Cuando se abre una sesión privada de datos desaparece la mayoría de los
SET, así como las variables públicas, por lo que barra de reinicializarlas.
5.8 Apariencia de un formulario
La propiedades que a continuación mencionaremos las mismas que rigen
la apariencia de la mayoría de los objetos como explicamos en un tema anterior:
Propiedad
Descripción
FontName
Determinamos el tipo de letra que se usara por defecto.
De esta propiedad dependen propiedades como:
TextHeight y TextWidth.
ForeColor
Determina el color de default del primer plano.
Height
Especifica la altura del formulario.
Icon
Archivo con extensión .ICO que aparecerá cuando se
minimice el formulario.
Coordenada de la columna de la esquina superior
Left
izquierda del formulario.
Picture
Llena el fondo del formulario con el gráfico de un
archivo .BMP o .ICO.
Coordenada de la fila de la esquina superior izquierda
Top
del
formulario.
Especifica el ancho del formulario
Width
5.9 Otras propiedades
ShowTips
Esta propiedad deberá estar en .T. si deseamos que nos aparezca los
mensajes que especificamos en la propiedad ToolTipText
de los objetos
ShowWindow
Especifica cuando un formulario esta al máximo nivel o es un formulario
hijo.
Valor
Descripción
0
Es el valor por default. Actúa como cualquier formulario,
mostrándose en el escritorio de Visual Foxpro
1
Es un formulario que esta dentro de otro configurado
como Top-level,
esto significa que si esta activo un
formulario Top-Level,
2
este le pertenecerá.
Es un formulario independiente de la aplicación y puede
incluir otros formularios.
WindosState
Con esta popiedad
el formulario puede aparecer minimizado o
maximizado.
Valor
Descripción
0
Normal
1
Minimizado
2
Maximizado
5.10 Eventos
Como ya hemos dicho, los eventos son sucesos que ocurren siempre como
respuesta a un mensaje del sistema o del usuario. Existen los siguientes eventos
relacionados con un formulario:
Evento
Descripción
Activate
Ocurre cuando se activa un formulario.
Deactivate
La ventana pasa a estar en segundo plano.
Destroy
Ocurre cuando se elimina de memoria el formulario.
GotFocus
Ocurre cuando el formulario recibe el foco.
Init
Se ejecuta en el momento en que inicia un formulario.
Load
Ocurre antes de que el objeto formulario sea creado.
LostFocus
Ocurre cuando el objeto pierde el foco.
moved
Ocurre al mover una ventana.
Paint
Ocurre cuando se repinta el formulario.
QueryUnload
Ocurre antes de que el formulario sea liberado de
memoria.
Res ize
Se ejecuta cuando un formulario cambia de tamaño.
Unload
Se ejecuta cuando el formulario es liberado de memoria.
Secuencia de eventos
l
Eventos al ejecutar un formulario por primera vez:
1. Load
2 . INIT
3. Activate
4 . Paint
5. GotFocus
6 . Paint
Eventos de control de una ventana:
l
Evento
Resize
1. Resize
2. Paint
Evento Moved
1. Moved
2. Paint
0
Eventos de control de una ventana activa
Al entrar a un formulario
1. Activate
2. Paint
3 . GotFocus
4. Paint
Al salir de un formulario
1. Lostfocus
2. Paint
3. Deactivate
4. Paint
l
Finalización del formulario
1. QueryUnload
2. Paint
3 . Destroy
4 . Paint
5. Unload
6 . Paint
5.11 Entorno de Datos
Un formulario no pueda estar desligado de una tabla, por lo que debemos
establecer una conexión entre los dos, esto se hace mediante el entorno de datos
del formulario Dataenvironment.
Para activar el entorno de datos debemos hacer clic en la opción Data
Environment (entorno de datos) del menú View (ver) (fig. 5.4).
Para incluir en el formulario las tablas o las vistas queremos utilizar es
necesario hacer clic con el botón secundario del ratón dentro de la ventana de
entorno de datos y seleccionar Add (agregar).
5.11 .l Propiedades del entorno de datos.
Propiedad
AutoCloseTables
Descripción
Si la propiedad es
.T. las tablas se cerraran
automáticamente al cerrar el formulario.
AutoOpenTables
Si la propiedad es .T. las tablas del entorno de datos se
abrirán
InitìalSelectedAlias
automáticamente.
Especifica cual va a ser la tabla seleccionada por
defecto.
OpenViews
Determina se abre o no las vistas locales y remotas
asociadas al formulario.
O-
Las vistas se abren automáticamente, siempre y
cuando AutoOpenTables sea .T.
1 - Sólo se abren las vistas locales
2 - Sólo se abren las vistas remotas
3 - No abre ninguna vista
5.11.2 Métodos
Método
Descripción
AfterCloseTables
Es el evento que se produce después de cerrar las
tablas.
BeforeOpenTables
Se ejecuta antes de abrir las tablas
CloseTables
Cierra por programa las tablas.
OpenTables
Abre por programa las tablas.
5.11.3 Cursores
Los cursores son tablas creadas en la memoria, que vamos a utilizar en la
asociación de tablas y formularios.
Propiedades relacionadas con los cursores
Para ver las propiedades relacionadas con los cursores, hacer clic en
alguna de las tablas de formulario:
Propiedad
Descripción
Alias
Por default es el mismo nombre de la tabla.
BufferModeOverride
Establece el sistema de almacenamiento en buffer para
el cursor.
0 - Ninguno
l- Escoger el sistema de almacenamiento en buffer
del
formulario
2 - Bloqueo pesimista a nivel registro
3 - Bloqueo optimista a nivel registro
4 - Bloqueo pesimista a nivel tabla
5 - Bloqueo optimista a nivel tabla.
CursorSource
Propiedad solo lectura que muestra cual es la tabla o
vista que ha creado el cursor.
Data bastq
Nombre de la Base de datos que contiene la tabla o
vista
Exclusive
Por default es .F. , ponerlo en .T. cuando no utilicemos
la tabla de manera compartida.
Filter
Establece un filtro para la tabla
(equivale a la
instrucción Set Filter To).
Order
Especificar alguno de las tag definidos en el archivo de
índices de la tabla.
Readonly
Si deseamos que no haya modificaciones establecer en
.T.
5.12 Formulario rápido
Una forma de crear un formulario rápido es utilizando el asistente de Visual
Foxpro:
1. Abra su proyecto
2. Ubíquese en la pestaña de Document
(documento) y luego en Forms
(formularios).
3. Presione el Botón New (nuevo).
4. Seleccione Wizard (asistente) (fig 5.9).
Fig. 5.9 Asistente para Formularios.
5. Seleccione OK.
6. Luego aparece la ventana donde usted escoge la tabla a utilizar y los campos
de esa tabla (fig 5.10).
Fig. 5.10 Cuadro para la selección de tabla y campos
7. Se visualizará la siguiente ventana (fig.5.11)
Fig.5.11 Cuadro para seleccionar el estilo de la formulario (Style) y el tipo de
botones(Button Type)
10. Seleccione el estilo del formulario y el tipo de botones a utilizar en el
formulario y luego presione Next (proximo).
ll. Aparecerá la siguiente ventana (fig. 5.12) :
5.12 Cuadro para seleccionar los índices.
12. Seleccione el ordenamiento de la tabla (índice).
13. Introduzca el titulo del formulario y luego Finish (finalizar).
VI INFORMES
Los informes permiten mostrar e imprimir los datos contenidos en tablas,
vistas o consultas en forma de listados.
Dentro de los informes se pueden agrupar los datos, sacar calculos, definir
variables para para contener resultados, contadores, subtotales y totales finales.
Algunas de las funciones para cálculos que Visual FoxPro incluye son: media
aritmética, mínimo, máximo, etc.
6.1 Diseñador de informes (fig. 6.1).
:
Fig. 6.1 Diseñador de Informes
Diseñador de informes : Esta ventana esta dividida en siete secciones:
l
l
Title (Título): Sólo se imprime al principio de la primera hoja del informe.
l
Page Header (Encabezado de página): Se imprime cada vez que se incia
una hoja nueva.
Group Header (encabezado de grupo): Suele utilizarse para identificar el
l
inicio de un grupo. Se puede cambiar el encabezado de página por el
encabezado del grupo si se especifica salto de página por cada grupo.
Detail (detalle): Este es el elemento fundamental de todos los informes, el
l
desglose.
l
l
Group Footer (pie de grupo): Suele utilizarse siempre al fina del grupo.
l
Page Footer (Pie de página): Se imprime al final de cada página.
0
Summary (resumen): Se imprime una vez que finalizo el reporte.
Entorno de datos: Asocia las tablas que se van a utilizar, las relaciones entre
ellas y los órdenes establecidos.
l
Barra de controles: incluye todos los controles insertables en un informe.
l
l
Etiqueta. Etiquetas de texto.
Campo. Cuadros de texto.
0 Líneas
l
Formas rectangulares.
l
Formas rectangulares con bordes redondeados.
l
Objetos circulares
0 Imágenes
Barra de herramientas de distribución (Layout): Permite alinear objetos,
l
ajustar su tamaño o enviar objetos al primer plano o al fondo.
6.2 Selección de los datos
Esta es la parte más importante del informe, la selección de datos, hay que
saber qué es lo que quiere el usuario o que el usuario muestre el diseño del
informe que desea, para comenzar a trabajar.
Los datos pueden ser simples (utilizando una sola tabla), como listados de
regiones, listado de departamentos, entre otros; o pueden ser algo mas complejos
(utilizando mas de una tabla) Ejemplo Reportes agrupados,
reportes
consolidados, etc. Los datos se pueden obtener directamente utilizando las tablas o utilizando
SQL para crear cursores, esta última es la más recomendada para una
aplicación
multiusuario.
Existen varios tipos de informes entre ellos :
- Listados
Muestra:
id
name
01
Region 1
02
Region 2
- Grupos con detalles
Region
Departamento
Region 1
Departamento a
Departamento b
Region 2
Departamento x
Departamento
y
- Matriciales o consolidados
------_---_---__--__------------------------
Rating
Region
Excellent Good Poor
-------------------------------------------Region
1
1
2
0
Region 2 3
0 1
------_---__--__---_-----------------------Totales
4
2 1
----------------_--------------------------Una vez que definimos los como queremos nuestro informe y que datos va
incluir hay que proceder a diseñarlo .
6.3 Sección Detalle
Este es el elemento fundamental del informe, puesto que aquí se desglosa
toda la información contenida en una o en varias tablas.
Los objetos incluidos en esta sección se repiten tantas veces como
registros haya en la tabla o en la vista principal sobre la que se este efectuando el
informe.
6.3.1 Propiedades de la sección detalle
Para acceder a las propiedades del detalle es necesario hacer doble clic
sobre la barra Detail (fig. 6.2).
Fig. 6.2 Propiedades del Detalle.
(Heiqht
a l t o ) :
Tamaño de la sección de detalle, medido en las unidades
establecidas para todo el informe. El tamaño se puede especificar de forma
exacta en este cuadro de diálogo o directamente en el diseñador de informes.
Para ello basta con poner el puntero del ratón sobre la barra del detalle y
arrastrar.
Constant band Heiqht (sección de alto constante): Es posible que la información
contenida en un cuadro de texto tenga que ajustar su tamaño a varias líneas par
poder visualizar el contenido, por lo tanto es posible que el alto de la sección
aumente por ello, para evitar esta situación mediante esta opción impediremos
que haya líneas de detalle con diferentes tamaños.
On enttv , On exit (Ejecutar expresión al entrar y ejecutar expresión al salir): Estos
dos cuadros de texto permiten especificar que expresión se evaluará antes y
después de imprimir esta sección.
Al igual que la sección detalle, las demás secciones presentan las mismas
propiedades.
6.3.2 Controles insertables
Existe una serie de objetos que van a poder ser insertados dentro del
diseño de un informe.
6.3.2.1 Etiquetas
Los controles de etiqueta consisten en textos introducidos directamente en
la ventada del generador de informes.
Para insertar un control de etiqueta dentro del informe:
1. Seleccione el control etiqueta.
2. Sitúese en el lugar donde desea la etiqueta.
3. Haga clic una vez con el botón izquierdo del ratón.
4. Aparece el cursor indicando que puede escribir.
Cada etiqueta permite modificar su aspecto desde el menú Format (formato).
Con opciónes como Align, Size, Horizontal Spacing, Vertical Spacing, Font,
Text alignment y mode.
Mediante el botón secundario podemos modificar las propiedades del
objeto (fig. 6.3).
Fig. 6.3 Propiedades de las etiquetas
Print When (imprimir condiciones): Este objeto se imprimirá cuando la condición
definida en este botón devuelva .T..
Obiect Position (posición del objeto):
Float (Flotante): El control
se ajunta a la posición de los elementos
precedentes, es decir, si existe algún elemento anterior a éste que ocupe más
especio del destinado, este objeto se imprimirá a continuación.
Fix retative to top of band (borde superior de la sección) : Este objeto fija su
posición con respecto al borde superior de la sección, independientemente si los
objetos anteriores son variables.
Fix relative to bottom of band (borde inferior de la sección): Igual que la
opción anterior, sólo que fija su posición con el borde inferior.
Comment (Comentario): Se utiliza para guardar el comentario del objeto.
6.3.2.2 Campos
Los objetos de este tipo de utilizan para imprimir el contenido de los
campos e tablas o vistas, expresiones o variables.
Para insertar un control de campo:
1. Seleccione el control de campo.
2. Marque el inicio del control y arrastre el ratón sobre el diseñador de
informes.
3. Defina las propiedades del control (fig. 6.4)
4. Pulse Aceptar.
Si se desea posteriormente modificar las propiedades de un campo:
1. Haga doble clic sobre el objeto.
2. Pulse el botón secundario del ratón y elija del menú la opción properties
Como los demás controles podemos modificar el aspecto de este control
mediante el menú Format.
Para cada objeto de campo se pueden especificar las siguientes
propiedades:
6.4 Propiedades de campo
Expresión (expresión): Este cuadro de texto permite introducir una expresión
valida.
Además haciendo clic en el botón de al lado (el de los puntos
suspensivos) se puede acceder al generador de expresiones.
Format (formato): Este cuadro de texto permite especificar las opciones de
formateo para la salida impresa de la expresión que se haya introducido en el
cuadro de texto Expresión (fig. 6.5).
Fig. 6.5 Formato salida
Format (formato): Este cuadro de texto se usa para introducir de forma directa la
mascara del formato.
Tipo de datos: Character, Numeric, Date (carácter, numérico y fecha): Especifica
el tipo de datos que se va a mostrar.
Editinq Options (opciones de edición): Según el tipo de datos escogido, muestra
una serie de opciones de formato.
l
Cadena
Carácter Descripción
Opción
Mayúsculas
Ignorar
@!
de @R
máscara
Convierte la expresión a mayúsculas.
Permite ignorar los caracteres de formato.
entrada
Formato SET DATE
@D
Muestra el dato como una fecha usando el
formato actual establecido por Set Date.
Formato de
fecha @E
Muestra la expresión como una fecha con el
europea.
formato dd/mm/aa.
Alinear a la izquierda
Alinea a la izquierda la cadena
Alinear a la derecha
@J
Alinea a la derecha la cadena.
Alinear al centro
@I
Centra la cadena.
l
Numérico
Opción
Carácter Descripción
Alinear a la izquierda
@B
Alinea hacia la izquierda
En blanco si es cero
@Z
No muestra nada en caso de que la
expresión sea cero.
(Negativo)
@(
Muestra
los números negativos entre
paréntesis
CR si es positivo
@C
Muestra al final de la expresión numérica la
cadena CR si el valor es positivo.
DB si es Negativo
@Ix
Muestra al final de la expresión numérica la
cadena DB si el calor es negativo.
Cero iniciales
@L
Muestra ceros al inicio de la expresión
numérica hasta completar el total de los
dígitos.
Moneda
63s
Muestra el valor numérico con formato
modeda.
Notación científica
@IA
Muestra la expresión numérica en formato
científico.
l
Fecha
Opción
Carácter Descripción
Formato Set Date -
@P
Muestra la fecha en el formato establecido
por Set Date
Formato de
fecha @E
Muestra la fecha en formato dd/mm/aa.
europea
Field Position (posición del campo): Las opciones permitidas son las mismas que
se ha descrito para las etiquetas.
Stretch with overflow (Ajustar al contenido del texto): Esta opción es útil para
expresiones de cadena sin longitud fija, como campos memo, permite que se
expanda
el campo para mostrar todo el texto contenido.
Calculations (calculos fig.6.6): Permite especificar el tipo de cálculo que se va a
realizar en este campo. Este cálculo se va realizando cada vez que se imprime el
campo. Estos cálculos se inician al comienzo del informe y muestran su valor al
final del mismo. Sin embargo esto se puede alterar escogiendo desde Reset
(restablecer) el ámbito del cálculo.
l
End of Report (Fin del informe). Los cálculos abarcan todo el informe.
Suele utilizarse para sumar globales.
l
End of page o End of column (final de página o final de columna): Se utiliza
para calculare imprimir subtotales al final de cada página o columna.
l
Group of Report (Grupo de informe): Si escogemos esta opción, el cálculo
volverá a iniciarse cuando inicie un nuevo grupo.
Fig. 6.6 Cálculo
Las opciones de cálculo posible son:
Descripción
Cálculo
Count
(recuento)
Cuenta el número de veces que se imprime la
expresión de este campo.
Sum (Suma)
Calcula la suma.
Average
Calcula la media aritmética.
(promedio)
Lowest (Mínimo)
Muestra el calor mínimo del campo.
Highest (Máximo)
Muestra al valor máximo.
Standard deviation
Devuelve la desviación estándar de los valores.
(Desviación
Variance
estándar)
(varianza)
Devuelve la varianza.
Print When (imprimir condiciones): Permite entre otras cosas, evitar la impresión
de valores repetidos si ya estaban en una línea, o evitar la impresión de un objeto
en función a una expresión lógica.
6.3.2.3 Imágenes y Controles OLE dependientes.
Se pueden incluir imágenes en un informe siempre que sean mapas de bits
o un objeto OLE reconocido por Visual FoxPro (fig. 6.6)
Fig. 6.6 Propiedades de la Imagen.
Opción
Clip Picture (recortar imagen)
Descripción
Si el marco es más pequeño que la imagen,
mostrará sólo una parte de la misma- Si es
mayor el marco que la imagen, se mostrara la
misma al tamafio original y centrada en ‘el
marco.
Scale picture, retain shape
Si el tamaño es más pequeño, mostrará la
(Cambiar la escala de la imagen, imagen más pequeiia.
conservar la forma)
Lo mismo ocurre si el
marco es mayor , amplia la imagen con las
mismas
proporciones.
Scale picture, fil1 the frame
Si el tamaño es menor que el de la imagen ésta
(cambiar la escala de la imagen,
se reduce, lo mismo que si el marco es mayor
rellenar el marco)
ampliándola, la diferencia es que la imagen se
muestra rellenando totalmente el marco, la
imagen pierde su proporción.
6.4 Menú Formato.
Este menú como ya hemos dicho, contiene opciones para modificar el
aspecto y posición de uno o más objetos seleccionados a la vez.
Opción
Descripción
Align (alinear)
Cambia la posición de uno o más objetos
tomando como referencia los bordes del
formulario o uno de los objetos.
Size (tamaño)
Modifica el tamaño de uno o más objetos en
función de uno de ellos.
Horizontal spacing
Reduce, incrementa o iguala
(espaciado
horizontal existente entre dos o más objetos
horizontal)
el espacio
seleccionados.
Vertical spacing
Reduce, incrementa o iguala el espacio vertical
(Espacio
existente
Vertical)
entre
dos
o
más
objetos
seleccionados.
Bring to front / send to back
Muestra en primer lugar o envía al fondo el o
(traer al primer plano / Enviar al
los objetos seleccionados.
fondo)
GrouplUngroup
Agrupa o desagrupa objetos.
( Agrupar / Desagrupar)
Snap to grid / set grid scale
Configura el aspecto de la cuadrícula.
(Forzar a la cuadrícula /
configurar
cuadrícula
Font (fuente)
Modifica el tipo de fuente, tamaño y estilo.
Text Alignment
Cambia la alineación del texto para etiquetas y
(alineación del texto)
campos.
Fil1 (relleno)
Muestra ocho rellenos, sólo es útil en los
rectángulos.
Pen
(borde)
Selecciona el tamaño y estilo del borde de una
línea o de los bordes de los rectángulos.
Especifica el modo en que se va mostrar un
Mode (Modo)
objeto:
Opaque (opaco) o Transparent
(transparente).
6.5 Secciones de encabezado y pie de página.
Se imprimen al inicio y al final de cada página. Se utilizan para imprimir los
datos generales de la empresa, titulo del informe, la fecha, logotipo, etc.
6.6 Secciones de título y resumen.
Estas dos secciones de un informe solo se imprimen al inicio y al final del
informe.
Se puede especificar o no su presencia mediante el menú Repott
(informe) y la opción Title / Summary (título / resumen fig 6.7). Se pueden usar
como portada de informes y totales. Si se indica New Page (nueva página) se
imprimirán en solos en una hoja.
Fig 6.7 Propiedades del Título / Resumen.
6.7 Variables en los informes.
Dentro del diseño del informe se pueden crear variables (fig. 6.8).
Funcionan exactamente igual que otra variable, sólo que tienen su ámbito
restringido solo al informe.
Una variable se calcula cada vez que se imprime una nueva línea de
detalle.
Fig. 6.8 Variables de informe
Descripción
Opción
Esta lista contiene todas las variables definidas
Variables
hasta este momento. Cuando seleccionamos una
variable , el cuadro de diálogo estará mostrando las
propiedades de esta variable.
Value to store
Indica la expresión que se va a calcular cada vez.
(almacenar
Puede se un campo, el resultado a una llamada de
valor)
función, cualquier expresión valida.
Initial Value
Indica el valor inicial de la variable.
(Valor inicial)
Release after report
Indica que ha de eliminar de memoria la variable
(liberar después del informe) después de la impresión del informe.
Calculate (calcular)
Permite hacer cálculos en función a la variable.
Reset at (reiniciar en)
Se puede reiniciar una nuevo cálculo al:
l
End of report (fin del informe)
l
End of page (fin de la página)
l
End of column (Fin de la columna)
l
Group (Fin del grupo)
La variable ese reinicializara con el valor inicial.
6.8 Impresión condicional.
Hay ocasiones en las que no se deben imprimir ciertos objetos. Esto se
puede evitar mediante el cuadro de diálogo Print When (fíg. 6.9).
.
Fig 6.9 Imprimir Condiciones
Opción
Descripción
Print repeated values
(imprimir
valores
Indica si se ha de imprimir el campo en la línea
repetidos) siguiente si el mismo valor que tiene la línea actual.
Also print
Cuando se escoge no imprimir valores repetidos, se
(imprimir
puede forzar la impresión para que se inicie en una
también)
nueva pagina 0 un nuevo grupo.
Remove line if blank
Si debido a condiciones, no se imprime ningún
(Quitar líneas en blanco)
Print only when
objeto en esta línea, son esta opción se omite.
El objeto se imprimirá sólo cuando sea cierta la
expresión is true
expresión especificada en el cuadro de texto.
(Imprimir sólo cuando la
expresión
sea
verdadera)
6.9 Creación de grupos
Los grupos se utilizan para establecer niveles en función a campos clave.
Por ejemplo, un listado por zona de clientes.
El hecho de crear grupos en un informe presupone que los registros están
ordenados por la clave qu6 se pretende agrupar. De otro modo se podrían tener
saltos
indeseables.
Si hacemos el listado propuesto en el primer párrafo, tendremos que crear
una tabla de zona y una tabla de clientes. Posteriormente crearemos una relación
entre las dos tablas por cve-zona y por último en la propiedad Order de Clientes,
estableceremos como orden activo cve-zona (fig. 6.10)
Fig. 6.10 Entorno de datos del informe
El siguiente paso es crear el grupo. Para esto elija Data Grouping (agrupar
datos) del menú Report (informe fig.6.11)
,..
6.11 Agrupar datos
Opción
Descripción
Group expressions
Especificar en orden, los grupos que desea formar
(expresiones
en el informe.
de
agrupación)
Start Group on new colum
Debe elegir esta opción si se ha diseíiado
el
(comezar grupo en una nueva informe para más de una columna.
columna)
Start each group on a new
Esta opción es parecida a la anterior, sólo en en
page (comenzar cada grupo
lugar de comenzar en una nueva columna,
en una nueva página)
comienza en una nueva página.
Reset page number to 1 for
Cada grupo empieza con el número de página 1.
each Group (Empezar en
página 1 por cada grupo)
Reprìnt group header on
Imprime en cada página el encabezado de grupo
each page (imprimir el
en lugar del encabezado de página.
encabezado de grupo en cada
página.
Start group on new page
Si el tamaño especificado aquí es menor que el
when less than ( Comenzar
que queda al final de la hoja cuando se acaba un
grupo en nueva página
grupo, en nuevo grupo comenzara en una nueva
cuando sea menor que.
página.
6.10 Columnas en infomes.
Se utilizan las columnas par imprimir un mayor número de líneas de detalle
en una pagina. El diseño de columnas, sólo afecta a la sección de detalle y a
todas las que se relacionan con ella, como son encabezado y pies de grupo.
Estas propiedades se cambian desde el cuadro de diálogo Page Setup.
6.11 Impresión de un informe.
Para imprimir un informe:
l
Desde el proyecto: Entre al informe que desee imprimir. Una vez adentro
haba clic sobre el botón imprimir de la barra estándar o sobre la opción
Run report del menú Report.
l
Desde el menú archivo: Elija la opción imprimir.
l
Menú de botón derecho: Elija la opción imprimir de este menú.
l
Desde la ventana de comandos: Introduzca el comando Report Form.
6.12 Vista preliminar.
Si se desea ve por pantalla una presentación preliminar del informe,
necesita estar en el informe que desea ver y desde la barra estándar elegir el
botón Print Preview o desde el menú archivo seleccionar la misma opción.
VII INTERNET & VISUAL FOXPRO
La red de redes se extiende cada día, hoy en día somos más de 70
millones de personas que nos interconectamos gracias a Internet.
Visual FoxPro no se podía quedar atrás y ha agregado utilerías para que
podamos consultar la información de las bases de datos de VisualFoxpro desde
el Web. Además de poder incluir en nuestras aplicaciones un explorador para
consulta del Web.
7.1 Acceso a páginas Internet desde Visual FoxPro.
La forma más sencilla de incorporar soporte de páginas HTML desde
Visual FoxPro puede ser la de utilizar el objeto Explorer aportado por el
explorador Internet Explores 4. Se puede crear un formulario e insertar este objeto
y, además tener un control total desde Visual FoxPro.
7.1 .l Propiedades
Propiedad
Descripción
Application
Devuelve el objeto contenedor.
Busy
Indica si el explorador esta ocupado recuperando
una página HTML.
Document
Devuelve una referencia de objeto al documento
actual.
FullName
Devuelve el nombre del ejecutable incluyendo la
ruta que contiene al explorador.
LocationName
Devuelve una cadena conteniendo el nombre del
recurso visualizado en ese momento. Si el recurso
es una pagina HTML devuelve el título de la página.
LocationURL
Devuelve la cadena conteniendo el URL de la
página
MenuBar
visualizada.
Determina si se ha demostrar o no la barra de
menús.
Determina si se ha de mostrar o no la varra de
StatusBar
estado.
Determina si se ha de mostrar o no la barra de
ToolBar
herramientas.
Determina la distancia entre el borde superior del
Top
objeto contenedor y el borde superior del objeto
explorer.
Devuelve una cadena especificando el tipo de
TYPe
recurso
7.1.2
Métodos
visualizado.
-
Método
Descripción
ClientToWindow
Son las coordenadas X y Y del cliente explorador
en la ventana contenedora.
GetProperty
Devuelve el valor de una propiedad el objeto
explorador.
GoBack
Visualiza la página anterior.
GoForward
Visualiza la página siguiente
GoHome
Muestra en el explorador la página inicio.
GoSearch
Visualiza la página de búsqueda.
Navigate
Navega hacia el recurso especificado por un URL
PutProperty
Fija el valor de una propiedad.
Quit
Cierra el Internet Explorer
Refresh
Actualiza la página que se esta visualizando.
stop
Cancela la operación de búsqueda.
7.1.3 Eventos
Evento
Descripción
BeforeNavigate
Ocurre justo antes de que el explorador navege
hacia una nueva página.
CommandChangeState
Ocurre cuando el estado de un comando cambia.
DownloadBegin
Ocurre cuando se inicia una operación de
navegación, después del evento BeforeNavigate.
DownloadComplete
Ocurre cuando la navegación finaliza por cualquier
motivo.
NavigateComplete
Ocurre cuando el explorador ha llegado a la nueva
localización.
NewWindow
Ocurre cuando se crea una nueva ventana para el
explorador.
Property Change
Ocurre cuando se ha ejecutado el método
PutProperiy.
Ocurre cuando el explorador esta listo para salir de
Quit
la aplicación.
StatusTextChange
Ocurre cuando cambia el texto de la barra de
estado.
TitleChange
Ocurre cuando el titulo del documento mostrado
esta listo o cambia su contenido.
WindowActivate
Ocurre cuando se activa la ventana principal del
Internet.
WindowMove
Ocurre siempre que se mueve la ventana de
Internet
WindowResize
explorer.
Ocurre cuando cambia el tamaño de la ventana
7.2 Aplicaciones para Internet.
Visual FoxPro ha incluido un poderoso asistente para crear paginas de
consulta en Internet , para crear estas páginas es necesario:
Abrir el asistente. Desde el menú
Tools (herramientas), elija la
opciones: Wizards (asistentes), All (Todos fig. 7.1)
(asistente para páginas de búsqueda de WWW fig. 7.2)
y Internet Search Wizard
Fig. 7.1 Asistentes de Visual FoxPro
Fig. 7.2 Asistente para páginas de búsqueda WWW
Paso 1 Select table (selección de tabla fig 7.3)
En este paso el asistente solicita la tabla que se va a publicar. Se tiene dos
alternativas: Tablas libres y tablas dependientes.
Si se tenia abierto un proyecto, al tratar de seleccionar la tabla este
aparecerá, al elegirlo se mostrarán las tablas que contiene. Por el contrario si no
se ha estado trabajando con ningún proyecto existe el botón Browse (mostrar)
para
seleccionarlo.
Es importante hacer notar que la tabla o base de datos debe residir en el
directorio Tools\inetWiz\Server
del directorio de Visual FoxPro.
Fig. 7.3 Paso 1 - Selección de tablas
Paso 2 Choose Search Field (selección del campo de búsqueda fig. 7.4)
Es recomendable tener al menos un índice en la tabla para hacer más
eficiente la búsqueda.
En este paso el asistente muestra un relación de los índices que contiene
la tabla. Sólo podrá seleccionar uno para optimizar la búsqueda.
S tep 2 - Choose Search Fleld
Fig. 7.4 Seleccionar el campo de búsqueda.
Paso 3 Set search page options (establecer opciones para la página de
búsqueda fig. 7.5)
Este paso nos permite poner el título de nuestra pagina en el cuadro de
texto Search Page Title (título de la página de búsqueda), el cual se ubicara el la
parte superior de la página.
El cuadro de texto Search page description (descripción de la página de
búsqueda) nos permite añadir una breve descripción de nuestra página, a la vez
que puede ser utilizado para describir la forma de utilizar la página.
Fig. 7.5 Establecer opciones de página de búsqueda
Paso 4 Set up Search Page (configurar la página de búsqueda fig 7.6)
Si se desea agregar imágenes a la página, en este paso se puede añadir
una imagen de fondo ( Backgound Image) y de encabezado (Header Image).
Al activar la casilla de verificación Provide the ability to download the
result set as file (proporcionar la posibilidad de transferir el conjunto), el asistente
agrega a la página una casilla de verificación para que el visitante
pueda
seleccionar y transferir datos.
Fig. 7.6 Configurar la página de búsqueda.
Paso 5 Select result fields (seleccione el campo de resultados fig. 7.7)
En este cuadro de diálogo seleccionamos de la lista de campos mostrados
los que queremos mostrar en la página.
Fig. 7.7 Selección de campos que aparecerán en la página.
Paso 6 Set up result page (Configurar pagina de resultados fig.7.8)
Este paso nos permite configurar la página de resultados, que no es otra
que la página con la consulta ejecutada, al igual que en la página de búsqueda
nos deja añadir dos imágenes la de fondo y encabezado, además de especificar
cuantos registros queremos que nos muestre por página (Maximum records) y
cual es el nombre del origen de datos ODBC.
S t e o 6. Set UD Result Paoe
1<none> FoxPro
Server
Fig. 7.8 Configurar página de resultados.
Paso 7 Finalizar
Al hacer clic en finalizar y al guardar el archivo. Visual FoxPro nos genera 3
archivos con este nombre:
Archivo
Descripción
.HTM
Archivo HTML el cual es nuestra página
de búsqueda.
.IDC
Es el archivo de consulta y contiene una
sentencia SQL.
.HTX
Archivo HTML que corresponde a la
página de resultados.
Si se conoce el HTML, estos archivos pueden ser editados para elaborar
páginas mas sofisticadas.
Ejemplo de Archivo .HTM
<HTML>
<HEAD>
<TITLE>LISTADO
DE CLIENTES POR ZONA4lITLE>
4HEADr
<CENTER>chl>LISTADO DE CLIENTES POR ZONA</hl></CENTER>
-=P>
-4BODY>
<P>
<CENTER>
<P></P>
<FORM ACTION=“PRUEBA.IDC” METHOD=“POST”>
4NPUT NAME=“SearchParam”
SIZE=lO VALUE=“” r
4NPUT TYPE=“SUBMIT”
VALUE=“Search”>
<br>
</CENTER>
<hr>ccenter>
4mg src=“IMG/FOXSM.GIF”>’
Generated by the Visual FoxPro WWW Search Page Wizard<br>
</center>
<hr>
</FORM>
4BODY>
</HTML>
Ejemplo de un archivo .IDC
Datasource: DatosFox
Template: PRUEBA.HTX
SQLStatement:
+SELECT Cve cte, Nom-cte, Cve-zona
+ FROM ‘CLIEf?TES’
+ WHERE Cvezona = ‘%SearchParam%’
Maxrecords: 10
Ejemplo de un archivo .HTX
<HTML>
<HEAD>
<TITLE>Visual
</HEAD>
FoxPro Query Return Page</TITLE>
cHEAD><TITLE>Visual
FoxPro WWW Data Server</TITLE></HEAD>
cBODY>
cCENTER>cHl>Search Resultsc/Hl><H2zVFP
WWW Data Serverc/H2><HR></CENTER>
<PRE>
<%BEGINDETAIL%>
cNOBR><B>c%Cve-cte%x/B>:
<%ENDDETAIL%>
</PRE>
cHR>
<DL>
<%BEGINDETAIL%>
cDT><Bx%Cve-cte%x/B>
<BR>
<%ENDDETAIL%>
-4DL>
cHR>
</BODY>
</HTML>
<%Nomcte%=-, <%Cvezona%x/NOBRz
Conclusiones
Las características más importantes que Visual FoxPro
ha venido
incorporando son:
l
Poderosos Asistentes para el desarrollo de menús, bases de datos, clases,
paginas web, informes, etiquetas, etc.
0
Características avanzadas de bases de datos como: reglas a nivel registro,
triggers (desencadenantes) de actualización,
borrado e inserción, relaciones
temporales 0 permanentes, etc.
l
El administrador de proyectos nos engloba todo lo que podemos crear en
nuestras aplicaciones, sin necesidad de estar navegando entre menús.
l
Características avanzadas en el diseño de clases orientadas a objeto, incluyendo
herencia, subclases, encapsulación y polimorfismo. Las librerías de clases
visuales y no visuales (por código) reducen enormemente el tiempo de
desarrollo.
l
Existen herramientas de diseño para todas las fases de desarrollo de la
aplicación. Un motor de bases de datos altamente eficiente, un lenguaje
centrado en los datos y la capacidad de creación de componentes hacen de
Visual FoxPro una herramienta idónea para la generación de aplicaciones.
.
Visual FoxPro puede intercambiar datos con bases de datos SQL a través de
OCBC.
De esta forma, no es necesario un gran esfuerzo en la adaptación de
aplicaciones basadas en servidor de ficheros a aplicaciones Cliente / servidor.
Las características anteriormente descritas permiten que cada vez una mayor
cantidad de usuarios que antaño programaban mediante Clipper encuentren una
gran posibilidad de migrar sus aplicaciones desarrolladas para plataforma DOS a un
ambiente de 32 bits o ambiente Windows sin grandes problemas de portabilidad, los
cuales fueron superados en la versión 6.0 de Visual FoxPro.
Bibliografía
l
Pedro J. Hernández Muñoz (1998). Visual FoxPro 5 Desarrollo de
Aplicaciones (la. ed). España: Mc Graw Hill.
l
Rubén Iglesias (1997). Visual FoxPro 5 Fundamentos v Técnicas de
Programación (la. ed). España: Computec Ra-ma.
0
Susan L. Reber, Robert Nichols Kulik, David Garza Marin (1998). Visual
FoxPro 5.0 (la. ed). México: Prentice Hall
l
Microsoft, Manual de FoxPro 5.0 (1997).
Descargar