universidad de colima maestría en ciencias computacionales

171
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

Upload: ngoque

Post on 02-Jan-2017

219 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Universidad de Colima Maestría en Ciencias Computacionales

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

Page 2: Universidad de Colima Maestría en Ciencias Computacionales

Facultad de Ingeniería Mec6nicu ~7 Eléctrica

EXPEDIENTE 266NUM. 93-5 13 1

C. KATIUZKA FLORES GUERREROLOPEZ COTILLA # 130C.P. 49000CIUDAD GUZMAN, JAL.

Informo a usted que ha sido aprobado como tema de titulación para obtenerel 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:

1IIIIIIVVVIVIIVIII

.- ADMINISTRADOR DE PROYECTOS

.- BASES DE DATOS

.- PROGRAMACION ORIENTADA A OBJETOS

.- CLASES BASE DE VISUAL FOXPRO

.- PROGRAMACION ORIENTADA A FORMULARIOS

.- INFORMES

.- INTERNET & VISUAL FOXPRO

.- CONCLUSIONESBIBLIOGRAFIA

Al mismo tiempo informo a usted que ha sido designado como asesor detitulación al C. M.C. RICARDO FUENTES COVARRUBIAS.

En cada uno de los ejemplares de titulación que presente para examen,deber& aparecer en primer término copia del

c.c.p. EXPEDIENTE ALUMNAAGFC/merv*

Km 9 Carretera Colima-Coqoimatlán, A.P. 299 / Ccdima. México / TelBfnnn Y F~Y ni 1V.7\ ? ni 7n

Page 3: Universidad de Colima Maestría en Ciencias Computacionales

H. CONSEJO TECNICO DEL POSGRADODE LA FACULTAD DE INGENIERIA MECANICA Y ELECTRICAP R E S E N T E .

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 .- ADMINISTRADOR DE PROYECTOSII .- BASES DE DATOSIII .- PROGRAMACION ORIENTADA A OBJETOSIV .- CLASES BASE DE VISUAL FOXPROV .- PROGRAMACION ORIENTADA A FORMULARIOSVI .- INFORMESVII .- INTERNET & VISUAL FOXPROVIII .- CONCLUSIONES

BIBLIOGRAFIA

El cual cumple con los requisitos necesarios para su aprobación, por lo cual

lo autorizo para su impresión.

ATENTAME>TECoquimatlán, Col., 12 $,e’Feb‘rero del 2000

HC ARfOlOi$+BI A SM.C.

c.c.p. EXPEDIENTERFC/merv*

Page 4: Universidad de Colima Maestría en Ciencias Computacionales

Exp.No.: 0038Fecha: 12-02-00Acta No.: 12

C. KATIUZKA FLORES GUERRERODomicilio: LOPEZ COTILLA # 130C.P.: 49000Localidad: CIUDAD GUZMAN, JAL.

En cumplimiento al artículo: 13 y 14 del reglamento de titulación, al artículo 40, Inciso A delreglamento 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 sidoautorizado por este Consejo Técnico del Posgrado su tema de Tesis para obtener el grado de Maestroen Ciencias Computacionales titulado: TUTORIAL DE VISUAL FOXPRO “ VERSION 6.0 “.para ser desarrollado bajo los siguientes puntos:

1 .- ADMINISTRADOR DE PROYECTOSII .- BASES DE DATOSIII .- PROGRAMACION ORIENTADA A OBJETOSI V .- CLASES BASE DE VISUAL FOXPROV .- PROGRAMACION ORIENTADA A FORMULARIOSVI .- INFORMESVII .- INTERNET & VISUAL FOXPROVIII .- CONCLUSIONES

BIBLIOGRAFIA

laC.

Así mismo hacemos de su conocimiento que de acuerdo con Ia línea de investigación encual proyecto ha

M.C. R:CA&:%NT;: COVARRUBIASsido autorizado como asesor de tesis al

A partir de la fecha de aprobación tendrá como plazo un ano para presentar su examen de grado, en casocontrario 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óndeberá recoger el oficio que acompahará a el visto bueno de su asesor de tesis, 10s cuales encabezarán cada uno de losejemplares de su tesis.

A t e n t a m

de la Facultad de

e n t e

la Universidad de

I

NTES COVARRUBIAS

M.C. VICTOR HUGO CASTILLO TOPETE M.C. RODOLFO GALLARDO ROSALES

Page 5: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 6: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 7: Universidad de Colima Maestría en Ciencias Computacionales

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

ll Bases de Datos .............................................................................................. 19.

2.1 Tablas ....................................................................................................... 2 1

2.2 Indices....................................................................................................... 2 4

2.3 Validaciones a nivel registro ..................................................................... 2 6

2.4 Relaciones entre tablas ............................................................................ 2 7

2.4.1 Relaciones permanentes .................................................................. 27

2.4.2 Relaciones temporales ..................................................................... 2 8

2.5 Tablas Libres ............................................................................................ 3 1

III Programación Orientada a Objetos .............................................................. 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 .......................................................................... a7

3.2.2 Propiedades ..................................................................................... 37

3.2.3 Métodos ........................................................................................... 39

3.2.4 Archivos .H ...................................................................................... .39

3.2.5 Documentación de la clase .............................................................. 4 0

3.2.6 Modificación de una clase ................................................................ 4 1

3.2.7 Instanciando objetos ......................................................................... 4 1

3.2.8 Operadores de referencia ................................................................. 4 2

3.2.9 Ejemplo de la creación de un clase con propiedades y métodos.. . ..4 2

3.2.9.1 Definir una clase .................................................................... 4 2

Page 8: Universidad de Colima Maestría en Ciencias Computacionales

3.2.9.2 Crear un objeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

3.2.9.3 Ámbito de un objeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 6

3.2.9.4 Mensajes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

3.2.9.5 Ocultación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 7

3.2.9.6 Poliformismo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 7

3.2.9.7 Objetos como propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 8

3.2.9.8 Herencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 9

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. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 6

4.2.5 Control del foco.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 6

4.2.6 Modificaciones. . , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 6

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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . :..6 8

4.3.4 Métodos de entorno de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6 9

4.3.5 Métodos de cuadrículas.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 9

4.3.6 Mover y posicionar objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 9

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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 0

4.4.3 Contenedor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 1

Page 9: Universidad de Colima Maestría en Ciencias Computacionales

4.4.4 Marcos de páginas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1

4.4.5 Grupo de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1

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 ,.......,.......,............,............................................. 8 1

4.4.11 Grupos de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

4.4.12 Casilla de verificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

4.4.13 Cuadro de lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 5

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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 1

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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Il 9

5.8 Apariencia del formulario . . . . . . . . . . . . . . . . . . . . . . , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .120

5.9 Otras propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .120

5.10 Eventos.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12 1

Page 10: Universidad de Colima Maestría en Ciencias Computacionales

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 ................................................................................... 1 3 1

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 .......................................................................................... 1 4 1

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.. ...................................................................................................... 1 6 1

Page 11: Universidad de Colima Maestría en Ciencias Computacionales

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

Page 12: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 13: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 14: Universidad de Colima Maestría en Ciencias Computacionales

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)

Page 15: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 16: Universidad de Colima Maestría en Ciencias Computacionales

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

Page 17: Universidad de Colima Maestría en Ciencias Computacionales

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)

Page 18: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 19: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 20: Universidad de Colima Maestría en Ciencias Computacionales

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)

Page 21: Universidad de Colima Maestría en Ciencias Computacionales

Esta página complementa la información del autor, al directorio del

proyecto, o si ha de guardar información para depuración.

Campo

Datos del autor

Local

Ultima generación

Archivos

Informar de depuración

Codificado

Adjuntar icono

Descripción

Este contiene los campos de compaMa, ciudad,

estado, país, Código postal.

Directorio donde reside el proyecto.

Fecha y hora de la última generación

Número de archivos incluidos en el proyecto

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 de depuración.

Crear una aplicación codificada en la que no se

pueda visualizar ningún texto reconocible

Especificar el icono que se va asociar a la

aplicación

Fig. 1.6 Informacibn del proyecto.

Page 22: Universidad de Colima Maestría en Ciencias Computacionales

b. Files (archivos fig. 1.7)

Campo

Tw

Name

Last Modified

Included

Code Page

Descripción

Muestra un icono que identifica al tipo de

archivo.

Nombre físico del archivo

Fecha de la última modificación del archivo.

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.

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.

Page 23: Universidad de Colima Maestría en Ciencias Computacionales

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

Class Library

Class Name

Instancing

Despription

Help File

Help context ID

Descripción

Nombre de la biblioteca donde se ha definido la

clase.

Nombre de la clase.

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. .

Comentario asociado a la clase.

Nombre del archivo HLP de ayuda.

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

Page 24: Universidad de Colima Maestría en Ciencias Computacionales

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 componente.

ODBC Drivers 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

Page 25: Universidad de Colima Maestría en Ciencias Computacionales

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

Page 26: Universidad de Colima Maestría en Ciencias Computacionales

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

Page 27: Universidad de Colima Maestría en Ciencias Computacionales

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

File

TargetDir

PM Item

Active X

Descripción

Nombre del archivo

Ubicación final del archivo. Admite 3 directorios

l Appdir: directorio de la aplicación.

l Windir: Directorio de Windows

l WinsysDir: Directorio System de Windows.

Indica si el archivo creará un acceso directo .

Los controles Active X siempre se instalan en el

directorio Winsys Dir.

7. Finish (Finalizar fig. 1.17)

Fig. 1.17 Finalizar

Page 28: Universidad de Colima Maestría en Ciencias Computacionales

En el paso siete se por finalizado el asistente y a continuación presentará

un informe de la instalación.

Page 29: Universidad de Colima Maestría en Ciencias Computacionales

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 con

de la Base de Datos.

itrol

Page 30: Universidad de Colima Maestría en Ciencias Computacionales

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:

Page 31: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 32: Universidad de Colima Maestría en Ciencias Computacionales

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 o

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.

Page 33: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 34: Universidad de Colima Maestría en Ciencias Computacionales

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\onesentre \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 loscampos 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

Page 35: Universidad de Colima Maestría en Ciencias Computacionales

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 referencial.

Candidate : 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

Page 36: Universidad de Colima Maestría en Ciencias Computacionales

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 TablaFig. 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.

Page 37: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 38: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 39: Universidad de Colima Maestría en Ciencias Computacionales

Aparecerá la ventana de Data Session, si las tablas

recuadro de Aliases debes abrirlas con el botón Open

no aparecen dentro del

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).

Page 40: Universidad de Colima Maestría en Ciencias Computacionales

4. Construimos la expresión con la cual queremos relacionar

partir de los campos de la tabla madre (fig. 2.10).

Fig. 2.10 Diseiiador de Expresiones

ambas tablas, a

5. Si deseamos establecer la relación de uno-a-muchos, solo hacemos clic en

one-to-many.

Page 41: Universidad de Colima Maestría en Ciencias Computacionales

Tablas Libres.

En comparación con las tablas dependientes, a las tablas libres las

acompañan una serie de restricciones:

l No es posible utilizar nombres largos.

l No te ofrece validaciones de campo, ni de registro.

l 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

Page 42: Universidad de Colima Maestría en Ciencias Computacionales

Ejercicio Práctico:

Cree la siguiente base de datos:

nombretebfonodiieccimcuidadcredtpqempmd

Wk.ids:i d

regionjd

wdjdprcd&idpreciocantidad

Page 43: Universidad de Colima Maestría en Ciencias Computacionales

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

tiene un comportamiento.

Clase

Y que

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

Page 44: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 45: Universidad de Colima Maestría en Ciencias Computacionales

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

Page 46: Universidad de Colima Maestría en Ciencias Computacionales

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 Desde del menú principal, elegir File (Archivo) la opción New (Nuevo).

l 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.

Page 47: Universidad de Colima Maestría en Ciencias Computacionales

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 nos

presentara el dìseAador 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 Propiedades

l 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

Page 48: Universidad de Colima Maestría en Ciencias Computacionales

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]

Page 49: Universidad de Colima Maestría en Ciencias Computacionales

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 Name (Nombre). Nombre del nuevo método.

l 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.

Page 50: Universidad de Colima Maestría en Ciencias Computacionales

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.

C LASS (clase)

Fig. 3.6-Información de la 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.

Page 51: Universidad de Colima Maestría en Ciencias Computacionales

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”)

Page 52: Universidad de Colima Maestría en Ciencias Computacionales

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

This

Thisform

ThisFormSet

Finalidad

Hace referencia al objeto que esta en el foco.

Hace referencia a la forma desde un objeto de la misma.

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 lamisma.

Page 53: Universidad de Colima Maestría en Ciencias Computacionales

DEFINE CLASS NombreClase AS ClaseBase

[[PROTECTED NombrePropiedadl, NombrePropiedad2...]

NombrePropiedad = Expresión...]

ADD OBJECT [PROTECTED] NombreObjeto as ClaseBase[NOINIT]

[WITH ListaPropiedades]].. .

[[PROCTECTED] FUNCTION 1 PROCEDURE nombre

[NODEFAULT]

Instrucciones

[ENDFUNC 1 ENDPROC]]...

ENDEFINE

Argumento

NombreClase

ClaseBase

PROTECTED

Descripción

Nombre asignado a la clase

Clase en la cual está basada

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

Page 54: Universidad de Colima Maestría en Ciencias Computacionales

Argumento Descripción

FUNCTION 1 PROCEDURE 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 AS CommandButton

Caption = “\cSalida” && Titulo del Botón

Page 55: Universidad de Colima Maestría en Ciencias Computacionales

Left =175 && Lado izquierdo del botón

Top =60 && Posición superior del botón

Height = 25 && Altura del botón

Visible = .T. && Poner visible el botón en la forma

Fontltalic = .T. && Texto Cursivo

ForeColor = 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 = “Navarro Jacobo”

oCliente .dFechaAlta = (12-05-99)

0 en su caso:

oCliente = CREATEOBJECT( “persona” )

WITH oCliente

.cNombre = “Sofía”

.cApellidos = “Flores Guerrero ”

.dFechaAlta = (19-I O-99)

Page 56: Universidad de Colima Maestría en Ciencias Computacionales

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) )

Page 57: Universidad de Colima Maestría en Ciencias Computacionales

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

Page 58: Universidad de Colima Maestría en Ciencias Computacionales

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 claseCUSTOM es una de ellas.

Page 59: Universidad de Colima Maestría en Ciencias Computacionales

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” )

Page 60: Universidad de Colima Maestría en Ciencias Computacionales

* 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

Page 61: Universidad de Colima Maestría en Ciencias Computacionales

*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.

Page 62: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 63: Universidad de Colima Maestría en Ciencias Computacionales

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

Page 64: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 65: Universidad de Colima Maestría en Ciencias Computacionales

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:

Valor Descripción

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.

Page 66: Universidad de Colima Maestría en Ciencias Computacionales

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

1

Ninguno. Default para imágenes y etiquetas

Fijo Simple. Default para los grupos de comandos, grupos de

opciones, cajas de edición y cajas de texto.

Page 67: Universidad de Colima Maestría en Ciencias Computacionales

Para las líneas y formas:

Descripción

0 Transparente

1 Default Solido.

2 - - - - ( D a s h )

3 ___--__--- (W

4 -_----- (Dash-Dot)

5 -m--w - - (Dash-Dot-Dot)

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.

Page 68: Universidad de Colima Maestría en Ciencias Computacionales

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

Page 69: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 70: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 71: Universidad de Colima Maestría en Ciencias Computacionales

MousePointer

Indica la forma del puntero del ratón cuando se sitúa encima de un objeto.

3

4

5

6

7

8

9

10

1 1

12

I”‘t”‘i

i.. .........I’. ............I

** :/iij.............. .,I.. ..............

pJi.. ...............;

Predeterminado

r-%-ji.. ...............I”““““.......:;+[..................i............... .1 1 ii.. -.............j

Icono: ................... I&J+;i ................... i........... .gyi ........... .: ................. Ii 1 ii.. ...............ii”““““........;\;\ ................j: .................... .+-.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.

Page 72: Universidad de Colima Maestría en Ciencias Computacionales

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 3 D

1 Normal

StatusBarText

Sirve para mostrar en la barra de estado una descripción del objeto que recibe

el foco.

Page 73: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 74: Universidad de Colima Maestría en Ciencias Computacionales

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 Carácter, Memo

Cuadricula

Cuadro de Lista

Botón de opción

Grupo de Opciones

Control Numérico

Caja de Texto

Carácter, Numérico

Carácter. Entero, Numérico

Entero, Lógico, Numérico

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.

Page 75: Universidad de Colima Maestría en Ciencias Computacionales

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.

DESTROY Se ejecuta cuando se destruye la variable que contiene al objeto.

* 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

Page 76: Universidad de Colima Maestría en Ciencias Computacionales

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ä Devuelve las coordenadas de la posición actual del

nYCoord 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

Page 77: Universidad de Colima Maestría en Ciencias Computacionales

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

CloneObject

RemoveObject

SetAll

ReadExpression

ReadMethod

Release

Reset

WriteMethod

Agrega una instancia de una clase a un a clase

contenedora.

Duplica un objeto completamente incluyendo todas las

propiedades y métodos definidos en éste.

Borra un objeto contenido en un objeto contenedor. Este

método debe llamarse desde el objeto contenedor

Modifica un grupo de propiedades asignando de una vez

un valor a todas ellas

Devuelve la expresión introducida en una propiedad.

Devuelve el texto del método especificado como

parámetro.

Elimina de memoria un objeto .

Reinicializa el contador de un objeto temporizador

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.

Page 78: Universidad de Colima Maestría en Ciencias Computacionales

Circle

&

cls

Point

Draw

Hide

Print

Pset

Dibuja una forma circular en un formulario.

Dibuja líneas en un formulario.

Borra el texto y gráficos definidos en un formulario.

Devuelve los parámetros de color de un punto definido en

un formulario.

Repinta el contenido de un formulario.

Oculta un formulario, conjunto de formularios o barra de

herramientas.

Imprime una cadena de caracteres en un formulario.

Cambia el color de un punto definido en un formulario por

el color de primer plano definido para ese formulario.

Refres h

TextHeiq ht

Repinta el contenido de un formulario actualizando sus

valores.

Devuelve la altura de una cadena de texto presentada .

4.3.3 Manejo de listas

Addltem

AddListltem

Añade un nuevo elemento a un objeto cuadro combinado o

cuadro de lista en una posición de índice determinada.

Añade un nuevo elemento a un objeto cuadro combinado o

cuadro lista en una posición determinada por su

identificador único.

Removeltem

RemoveListltem

Clear

IndexToltemld

Elimina un elemento de la lista de un cuadro combinado o

cuadro de lista por su índice.

Elimina un elemento de las lista de un cuadro combinado o

cuadro de lista por su identificador único.

Borra el contenido de la lista de un cuadro combinado o

cuadro lista.

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

Page 79: Universidad de Colima Maestría en Ciencias Computacionales

Requerv

su posición de índice.

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

AddColumnDeleteColumnDoScroll

Activa una celda determinada por los parámetros nFila yncolumna.Añade un nuevo objeto columna a una cuadrícula.Elimina un objeto columna de un control cuadrículaSimula el movimiento de la parte visualizada en grid a raízde la pulsación del ratón en alguna de las barras dedesplazamiento.

4.3.6 Mover y posícionar objetos

Dock

Dracl

Move

Apila una barra de herramientas en alguno de los cuatro

bordes de la ventana principal.

Inicia o finaliza una secuencia de marcar, arrastrar y soltar.

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.

Page 80: Universidad de Colima Maestría en Ciencias Computacionales

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

Page 81: Universidad de Colima Maestría en Ciencias Computacionales

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)

Page 82: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 83: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 84: Universidad de Colima Maestría en Ciencias Computacionales

Modificando atributos de la fuente.

Las propiedades para tales efectos son Fontname (seleccionar la fuente),

FontBold (Negr i ta ) , Font i ta l ic (Curs iva) , FontStrikeThru (Tachado) 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.

Page 85: Universidad de Colima Maestría en Ciencias Computacionales

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”

Page 86: Universidad de Colima Maestría en Ciencias Computacionales

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

L

M

control.

Muestra ceros a la izquierda completando hasta el principio

para datos de tipo numérico.

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

Page 87: Universidad de Colima Maestría en Ciencias Computacionales

R

!

$

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.

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

9

#*

Permite la introducción de cualquier carácter.

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.

Page 88: Universidad de Colima Maestría en Ciencias Computacionales

Format i A

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 “,”

Page 89: Universidad de Colima Maestría en Ciencias Computacionales

Indicador de Moneda

El comando SET CURRENCY sirve para visualizar la el tipo de moneda

que se esta visualizando. Ajusta dos parámetros:

l El símbolo o cadena de caracteres utilizado como indicador de moneda.

l 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)

Page 90: Universidad de Colima Maestría en Ciencias Computacionales

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

Page 91: Universidad de Colima Maestría en Ciencias Computacionales

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 .

Page 92: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 93: Universidad de Colima Maestría en Ciencias Computacionales

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).

Page 94: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 95: Universidad de Colima Maestría en Ciencias Computacionales

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 =0

Descripción

No existe una relación directa entre el

cuadro de lista y el origen de los datos.

Page 96: Universidad de Colima Maestría en Ciencias Computacionales

RowSource=“”

RowSourceType =1

RowSource=“Opciónl ,Opcion2,...”

RowSourceType =2

RowSource=“cAlias”

RowSourceType =3

RowSource=” SELECT * FROM”

RowSourceType = 4

RowSource=” Archivo

consulta.QPR”

de

cuadro de lista y el origen de los datos.

Para manejar los elementos de la Isita

se utilizan los métodos Addltem y

Removeltem.

Despliega los elementos contenidos en

una cadena de texto separados por

comas cada uno de ellos.

Desp l iega en cada co lumna e l

contenido del campo de una tabla. El

número de columnas presentado

depende del va lor conten ido 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

cursos creado con una sentencia SQL.

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 s e h a n

seleccionado mediante el comando

Select.

Este caso es similar al anterior, solo

que el origen de la consulta se

establece a partir de un archivo con

extensión .QPR. Por tanto, se definen

tantas columnas como campos

Page 97: Universidad de Colima Maestría en Ciencias Computacionales

resultantes tenga la columna

RowSourceType =5

RowSource=“aMatriz”

RowSourceType =6

Muestra el contenido de una matriz. Se

muestran tantas columnas como

dimensiones tenga la matriz.

Despliega el contenido de cada uno de

los campos especificados por la

RowSource=”

Campo2,..”

propiedad RowSource. Debe indicarsecAlias.Campol,

el alias al cual pertenecen cada uno de

los campos.

Los cuadros de lista creados con esta

RowSourceType =7 característica muestran los archivos

RowSource=” ComodínArchivos”contenidos en un directorio, de acuerdo

al patrón especificado en la propiedad

RowSource

RowSourceType =8

RowSource=” cArchivoDBF”

Caso 0

ThkRowSourceType = 0

This.AddItem(“Elementol”)

This.Addltem(“Elemento 2”)

This.AddItem(“Elemento3”)

This.AddItem(“Elemento 4”)

This.Addltem(“Elemento 5”)

El cuadro de lista muestra la estructura

de la tabla especificada en la propiedad

RowSource.

Page 98: Universidad de Colima Maestría en Ciencias Computacionales

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”

Page 99: Universidad de Colima Maestría en Ciencias Computacionales

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”

Page 100: Universidad de Colima Maestría en Ciencias Computacionales

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

desplegadas en un cuadro de lista.

determina el número de columnas

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.

Page 101: Universidad de Colima Maestría en Ciencias Computacionales

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

Page 102: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 103: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 104: Universidad de Colima Maestría en Ciencias Computacionales

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

Page 105: Universidad de Colima Maestría en Ciencias Computacionales

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

Page 106: Universidad de Colima Maestría en Ciencias Computacionales

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”)

Page 107: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 108: Universidad de Colima Maestría en Ciencias Computacionales

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 : .yi:.,... . . . . . . 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.

Page 109: Universidad de Colima Maestría en Ciencias Computacionales

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 de datos por teclado, las propiedades

KeyboardHighValuey KeyboardLowVaIue controlan los límites Superior e Inferior

por teclado.

Si utilizamos el ratón , las propiedades son SpinnerHighValue y

SpinnerLowValue, 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, ;

Page 110: Universidad de Colima Maestría en Ciencias Computacionales

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

Page 111: Universidad de Colima Maestría en Ciencias Computacionales

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

Page 112: Universidad de Colima Maestría en Ciencias Computacionales

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

Partition

View

Indica si los paneles derecho e izquierdo de un objeto

cuadrícula estarán enlazados cuando se divida este.

Indica si un objeto cuadrícula está dividido en dos paneles.

Determina el tipo de vista para una cuadrícula. Si se han

definido particiones, podemos definir el aspecto de cada

una de ellas.

Page 113: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 114: Universidad de Colima Maestría en Ciencias Computacionales

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, el control establecido en

CurrentControl.

Page 115: Universidad de Colima Maestría en Ciencias Computacionales

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

Page 116: Universidad de Colima Maestría en Ciencias Computacionales

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

Page 117: Universidad de Colima Maestría en Ciencias Computacionales

;

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.

Page 118: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 119: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 120: Universidad de Colima Maestría en Ciencias Computacionales

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

Crear nuevo

Crear desde archivo

Descripción

Crea un nuevo objeto incrustado en formulario.

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

Insertar Control

Incrustar: Si se elige esta opción (default), el

archivo queda incrustado creando una copia

completa del mismo en el 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.

Page 121: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 122: Universidad de Colima Maestría en Ciencias Computacionales

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

Page 123: Universidad de Colima Maestría en Ciencias Computacionales

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

Page 124: Universidad de Colima Maestría en Ciencias Computacionales

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

establecen predeterminados, cada vez que se arranque Visual FoxPro

recuperará la configuración aquí descrita (Fig. 5.6)

se

se

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.

Page 125: Universidad de Colima Maestría en Ciencias Computacionales

l Snap to grid (Forzar a la cuadricula). Activa el ajuste automático de

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.

l Vertical Spacing pixels (Espaciado Vertical pixeles): Espaciado

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.

Page 126: Universidad de Colima Maestría en Ciencias Computacionales

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).

Page 127: Universidad de Colima Maestría en Ciencias Computacionales

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) :

An l..c!dHi _Fig. 5.8 Páginas de la ventana de propiedades

Página

All (Todo)

Data (Datos)

Methods (métodos)

Layout (distribución)

Otros (other)

Descripción

En esta página se encuentran todas las propiedades,

eventos y métodos del objeto seleccionado.

Aquí están todas las propiedades relacionadas con el

manejo de la dato.

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.

Propiedades que afectan la visualización del .objeto

como: color, estilo, tamaño, etc.

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.

Page 128: Universidad de Colima Maestría en Ciencias Computacionales

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 contienen las

siguientes propiedades:

Propiedad

Closable

ControlBox

HalfHeígtCaptíon

Icon

MaxButton

Descripción

Muestra el icono de cierre de ventana y la opción

Cerrar del menú control.

Indica se ha de mostrar en la parte izquierda de la

barra de título el menú control de ventana.

Establece la altura de la barra de título a la mitad

establecida en el entorno de Windows.

Archivo .ICO mostrado en la parte superior izquierda.

Indica si se ha demostrar el botón maximizar en la

Page 129: Universidad de Colima Maestría en Ciencias Computacionales

MinButton

Movable

WatsThisButton

barra de título y en el menú control.

Hace lo mismo que la propiedad anterior solo que con

el botón de minimizar.

Impide el movimiento del formulario desde el menú

control o la barra de título en caso de tener .F.

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.

Page 130: Universidad de Colima Maestría en Ciencias Computacionales

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

FontName

ForeColor

Height

Icon

Left

Picture

Top

Width

Descripción

Determinamos el tipo de letra que se usara por defecto.

De esta propiedad dependen propiedades como:

TextHeight y TextWidth.

Determina el color de default del primer plano.

Especifica la altura del formulario.

Archivo con extensión .ICO que aparecerá cuando se

minimice el formulario.

Coordenada de la columna de la esquina superior

izquierda del formulario.

Llena el fondo del formulario con el gráfico de un

archivo .BMP o .ICO.

Coordenada de la fila de la esquina superior izquierda

del formulario.

Especifica el ancho del formulario

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.

Page 131: Universidad de Colima Maestría en Ciencias Computacionales

Valor

0

1

2

Descripción

Es el valor por default. Actúa como cualquier formulario,

mostrándose en el escritorio de Visual Foxpro

Es un formulario que esta dentro de otro configurado

como Top-level, esto significa que si esta activo un

formulario Top-Level, 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.

L o a d Ocurre antes de que el objeto formulario sea creado.

LostFocus Ocurre cuando el objeto pierde el foco.

Page 132: Universidad de Colima Maestría en Ciencias Computacionales

moved

Paint

QueryUnload

Ocurre al mover una ventana.

Ocurre cuando se repinta el formulario.

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

l Eventos de control de una ventana:

Evento Resize

1. Resize

2. Paint

Evento Moved

1. Moved

2. Paint

0 Eventos de control de una ventana activa

Page 133: Universidad de Colima Maestría en Ciencias Computacionales

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).

Page 134: Universidad de Colima Maestría en Ciencias Computacionales

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

AutoOpenTables

InitìalSelectedAlias

OpenViews

Descripción

Si la propiedad es .T. las tablas se cerraran

automáticamente al cerrar el formulario.

Si la propiedad es .T. las tablas del entorno de datos se

abrirán automáticamente.

Especifica cual va a ser la tabla seleccionada por

defecto.

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

AfterCloseTables

Descripción

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.

Page 135: Universidad de Colima Maestría en Ciencias Computacionales

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

CursorSource

Data bastq

Exclusive

Filter

Order

Readonly

2 - Bloqueo pesimista a nivel registro

3 - Bloqueo optimista a nivel registro

4 - Bloqueo pesimista a nivel tabla

5 - Bloqueo optimista a nivel tabla.

Propiedad solo lectura que muestra cual es la tabla o

vista que ha creado el cursor.

Nombre de la Base de datos que contiene la tabla o

vista

Por default es .F. , ponerlo en .T. cuando no utilicemos

la tabla de manera compartida.

Establece un filtro para la tabla (equivale a la

instrucción Set Filter To).

Especificar alguno de las tag definidos en el archivo de

índices de la tabla.

Si deseamos que no haya modificaciones establecer en

.T.

Page 136: Universidad de Colima Maestría en Ciencias Computacionales

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

Page 137: Universidad de Colima Maestría en Ciencias Computacionales

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

formulario y luego presione Next (proximo).

ll. Aparecerá la siguiente ventana (fig. 5.12) :

5.12 Cuadro para seleccionar los índices.

e l

12. Seleccione el ordenamiento de la tabla (índice).

Page 138: Universidad de Colima Maestría en Ciencias Computacionales

13. Introduzca el titulo del formulario y luego Finish (finalizar).

Page 139: Universidad de Colima Maestría en Ciencias Computacionales

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

l Diseñador de informes : Esta ventana esta dividida en siete secciones:

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.

Page 140: Universidad de Colima Maestría en Ciencias Computacionales

l Group Header (encabezado de grupo): Suele utilizarse para identificar el

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.

l Detail (detalle): Este es el elemento fundamental de todos los informes, el

desglose.

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.

l 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 Etiqueta. Etiquetas de texto.

l Campo. Cuadros de texto.

0 Líneas

l Formas rectangulares.

l Formas rectangulares con bordes redondeados.

l Objetos circulares

0 Imágenes

Page 141: Universidad de Colima Maestría en Ciencias Computacionales

l Barra de herramientas de distribución (Layout): Permite alinear objetos,

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

0 2 Region 2

Page 142: Universidad de Colima Maestría en Ciencias Computacionales

- 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.

Page 143: Universidad de Colima Maestría en Ciencias Computacionales

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.

( a l t o ) :Heiqht 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.

Page 144: Universidad de Colima Maestría en Ciencias Computacionales

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

objeto (fig. 6.3).

del

Fig. 6.3 Propiedades de las etiquetas

Page 145: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 146: Universidad de Colima Maestría en Ciencias Computacionales

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 especificarFormat (formato): Este cuadro de texto permite especificar

formateo para la salida impresa de la expresión que se hayaformateo para la salida impresa de la expresión que se haya

cuadro de texto Expresión (fig. 6.5).cuadro de texto Expresión (fig. 6.5).

las opciones de

introducido en el

Fig. 6.5 Formato salida

Page 147: Universidad de Colima Maestría en Ciencias Computacionales

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

Opción Carácter Descripción

Mayúsculas @! Convierte la expresión a mayúsculas.

Ignorar máscara de @R 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

Alinear a la izquierda

En blanco si es cero

(Negativo)

CR si es positivo

DB si es Negativo

Carácter Descripción

@B Alinea hacia la izquierda

@Z No muestra nada en caso de que la

expresión sea cero.

@( Muestra los números negativos entre

paréntesis

@C Muestra al final de la expresión numérica la

cadena CR si el valor es positivo.

@Ix Muestra al final de la expresión numérica la

Page 148: Universidad de Colima Maestría en Ciencias Computacionales

Cero iniciales @L

Moneda 63s

Notación científica @IA

cadena DB si el calor es negativo.

Muestra ceros al inicio de la expresión

numérica hasta completar el total de los

dígitos.

Muestra el valor numérico con formato

modeda.

Muestra la expresión numérica en formato

científico.

l Fecha

Opción

Formato Set Date -

Carácter Descripción

@P Muestra la fecha en el formato establecido

por Set Date

Formato de

europea

fecha @E Muestra la fecha en formato dd/mm/aa.

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.

Page 149: Universidad de Colima Maestría en Ciencias Computacionales

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:

Cálculo Descripción

Count (recuento)

Sum (Suma)

Average (promedio)

Lowest (Mínimo)

Highest (Máximo)

Standard deviation

(Desviación estándar)

Variance (varianza)

Cuenta el número de veces que se imprime la

expresión de este campo.

Calcula la suma.

Calcula la media aritmética.

Muestra el calor mínimo del campo.

Muestra al valor máximo.

Devuelve la desviación estándar de los valores.

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.

Page 150: Universidad de Colima Maestría en Ciencias Computacionales

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)

Scale picture, retain shape

(Cambiar la escala de la imagen,

conservar la forma)

Scale picture, fil1 the frame

(cambiar la escala de la imagen,

rellenar el marco)

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.

Si el tamaño es más pequeño, mostrará la

imagen más pequeiia. Lo mismo ocurre si el

marco es mayor , amplia la imagen con las

mismas proporciones.

Si el tamaño es menor que el de la imagen ésta

se reduce, lo mismo que si el marco es mayor

ampliándola, la diferencia es que la imagen se

muestra rellenando totalmente el marco, la

Page 151: Universidad de Colima Maestría en Ciencias Computacionales

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)

Size (tamaño)

Horizontal spacing

(espaciado horizontal)

Vertical spacing

(Espacio Vertical)

Bring to front / send to back

(traer al primer plano / Enviar al

fondo)

GrouplUngroup

( Agrupar / Desagrupar)

Snap to grid / set grid scale

(Forzar a la cuadrícula /

configurar cuadrícula

Font (fuente)

Text Alignment

(alineación del texto)

Fil1 (relleno)

Pen (borde)

Cambia la posición de uno o más objetos

tomando como referencia los bordes del

formulario o uno de los objetos.

Modifica el tamaño de uno o más objetos en

función de uno de ellos.

Reduce, incrementa o iguala el espacio

horizontal existente entre dos o más objetos

seleccionados.

Reduce, incrementa o iguala el espacio vertical

existente entre dos o más objetos

seleccionados.

Muestra en primer lugar o envía al fondo el o

los objetos seleccionados.

Agrupa o desagrupa objetos.

Configura el aspecto de la cuadrícula.

Modifica el tipo de fuente, tamaño y estilo.

Cambia la alineación del texto para etiquetas y

campos.

Muestra ocho rellenos, sólo es útil en los

rectángulos.

Selecciona el tamaño y estilo del borde de una

Page 152: Universidad de Colima Maestría en Ciencias Computacionales

Mode (Modo)

línea o de los bordes de los rectángulos.

Especifica el modo en que se va mostrar un

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

como portada de informes y totales. Si se indica New

imprimirán en solos en una hoja.

fig 6.7). Se pueden usar

Page (nueva página) se

Fig 6.7 Propiedades del Título / Resumen.

Page 153: Universidad de Colima Maestría en Ciencias Computacionales

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

Opción Descripción

Variables

Value to store

(almacenar valor)

Initial Value

Esta lista contiene todas las variables definidas

hasta este momento. Cuando seleccionamos una

variable , el cuadro de diálogo estará mostrando las

propiedades de esta variable.

Indica la expresión que se va a calcular cada vez.

Puede se un campo, el resultado a una llamada de

función, cualquier expresión valida.

Indica el valor inicial de la variable.

Page 154: Universidad de Colima Maestría en Ciencias Computacionales

(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

puede evitar mediante el cuadro de diálogo Print When.

Fig 6.9 Imprimir Condiciones

ciertos objetos. Esto se

(fíg. 6.9).

Opción Descripción

Print repeated values Indica si se ha de imprimir el campo en la línea

(imprimir valores repetidos) siguiente si el mismo valor que tiene la línea actual.

Also print Cuando se escoge no imprimir valores repetidos, se

(imprimir también) puede forzar la impresión para que se inicie en una

nueva pagina 0 un nuevo grupo.

Remove line if blank Si debido a condiciones, no se imprime ningún

Page 155: Universidad de Colima Maestría en Ciencias Computacionales

(Quitar líneas en blanco) objeto en esta línea, son esta opción se omite.

Print only when 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)

Page 156: Universidad de Colima Maestría en Ciencias Computacionales

,..

6.11 Agrupar datos

Opción Descripción

Group expressions Especificar en orden, los grupos que desea formar

(expresiones de agrupación) en el informe.

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.

Page 157: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 158: Universidad de Colima Maestría en Ciencias Computacionales

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

Busy

Document

FullName

LocationName

LocationURL

MenuBar

Devuelve el objeto contenedor.

Indica si el explorador esta ocupado recuperando

una página HTML.

Devuelve una referencia de objeto al documento

actual.

Devuelve el nombre del ejecutable incluyendo la

ruta que contiene al explorador.

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.

Devuelve la cadena conteniendo el URL de la

página visualizada.

Determina si se ha demostrar o no la barra de

Page 159: Universidad de Colima Maestría en Ciencias Computacionales

StatusBar

ToolBar

Top

TYPe

menús.

Determina si se ha de mostrar o no la varra de

estado.

Determina si se ha de mostrar o no la barra de

herramientas.

Determina la distancia entre el borde superior del

objeto contenedor y el borde superior del objeto

explorer.

Devuelve una cadena especificando el tipo de

recurso visualizado.

7.1.2 Métodos -

Método

ClientToWindow

GetProperty

Descripción

Son las coordenadas X y Y del cliente explorador

en la ventana contenedora.

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

Page 160: Universidad de Colima Maestría en Ciencias Computacionales

CommandChangeState

DownloadBegin

DownloadComplete

NavigateComplete

NewWindow

Property Change

Quit

StatusTextChange

TitleChange

WindowActivate

WindowMove

WindowResize

hacia una nueva página.

Ocurre cuando el estado de un comando cambia.

Ocurre cuando se inicia una operación de

navegación, después del evento BeforeNavigate.

Ocurre cuando la navegación finaliza por cualquier

motivo.

Ocurre cuando el explorador ha llegado a la nueva

localización.

Ocurre cuando se crea una nueva ventana para el

explorador.

Ocurre cuando se ha ejecutado el método

PutProperiy.

Ocurre cuando el explorador esta listo para salir de

la aplicación.

Ocurre cuando cambia el texto de la barra de

estado.

Ocurre cuando el titulo del documento mostrado

esta listo o cambia su contenido.

Ocurre cuando se activa la ventana principal del

Internet.

Ocurre siempre que se mueve la ventana de

Internet 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) y Internet Search Wizard

(asistente para páginas de búsqueda de WWW fig. 7.2)

Page 161: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 162: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 163: Universidad de Colima Maestría en Ciencias Computacionales

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

Page 164: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 165: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 166: Universidad de Colima Maestría en Ciencias Computacionales

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:

.IDC

.HTX

Archivo

.HTM

Descripción

Archivo HTML el cual es nuestra página

de búsqueda.

Es el archivo de consulta y contiene una

sentencia SQL.

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.

Page 167: Universidad de Colima Maestría en Ciencias Computacionales

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=“” r4NPUT 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: DatosFoxTemplate: PRUEBA.HTXSQLStatement:+SELECT Cve cte, Nom-cte, Cve-zona+ FROM ‘CLIEf?TES’+ WHERE Cvezona = ‘%SearchParam%’Maxrecords: 10

Ejemplo de un archivo .HTX

<HTML><HEAD><TITLE>Visual FoxPro Query Return Page</TITLE></HEAD>

cHEAD><TITLE>Visual FoxPro WWW Data Server</TITLE></HEAD>cBODY>cCENTER>cHl>Search Resultsc/Hl><H2zVFP WWW Data Serverc/H2><HR></CENTER><PRE><%BEGINDETAIL%>

Page 168: Universidad de Colima Maestría en Ciencias Computacionales

cNOBR><B>c%Cve-cte%x/B>: <%Nomcte%=-, <%Cvezona%x/NOBRz<%ENDDETAIL%></PRE>cHR><DL><%BEGINDETAIL%>cDT><Bx%Cve-cte%x/B><BR><%ENDDETAIL%>-4DL>cHR></BODY></HTML>

Page 169: Universidad de Colima Maestría en Ciencias Computacionales

Conclusiones

Las características más importantes que Visual FoxPro ha venido

incorporando son:

l

0

l

l

l

.

Poderosos Asistentes para el desarrollo de menús, bases de datos, clases,

paginas web, informes, etiquetas, etc.

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.

El administrador de proyectos nos engloba todo lo que podemos crear en

nuestras aplicaciones, sin necesidad de estar navegando entre menús.

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.

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.

Page 170: Universidad de Colima Maestría en Ciencias Computacionales

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.

Page 171: Universidad de Colima Maestría en Ciencias Computacionales

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).