Visual fox pro_manual_del_programador_800_paginas_by_enigma
805
Este Documento Ha sido descargado desde la Web más completa en todo tipo de e- books y Tutoriales. Si deseas más información o libros, entonces ingresa a: http://www.enigmaelectronica.tk http://www.foroenigma.tk Y podrás descargar muchas aplicaciones útiles. Libros Manuales Tutoriales Cursos Programas Música Películas Grupo Enigma Electrónica Enigma Team Si algún Archivo Requiriera de Contraseña de acceso siempre será: www.enigmaelectronica.tk
Visual fox pro_manual_del_programador_800_paginas_by_enigma
1. Este Documento Ha sido descargado desde la Web ms completa
en todo tipo de e- books y Tutoriales. Si deseas ms informacin o
libros, entonces ingresa a: http://www.enigmaelectronica.tk
http://www.foroenigma.tk Y podrs descargar muchas aplicaciones
tiles. Libros Manuales Tutoriales Cursos Programas Msica Pelculas
Grupo Enigma Electrnica Enigma Team Si algn Archivo Requiriera de
Contrasea de acceso siempre ser: www.enigmaelectronica.tk
2. Manual del programador, Parte 1: Programacin en Visual
FoxPro Manual del programador, Parte 1: Programacin en Visual
FoxPro Visual FoxPro es una eficaz herramienta de administracin de
datos, pero adems podr beneficiarse de toda su eficacia para crear
aplicaciones. Comprender las tcnicas de programacin orientada a
objetos y el modelo controlado por eventos puede aumentar su
productividad como programador. Captulo 1 Introduccin a la
programacin Si est empezando a programar, aprenda el proceso y el
mtodo de programacin en Visual FoxPro. Captulo 2 Programar una
aplicacin Cuando programe una aplicacin, organice sus componentes
con el Administrador de programas, una forma integrada de generar y
probar su aplicacin a medida que la cree. Captulo 3 Programacin
orientada a objetos Con la programacin orientada a objetos, puede
crear componentes de aplicacin independientes que respondan a
acciones del usuario y al sistema y que se puedan mantener y
reutilizar fcilmente. Captulo 4 Descripcin del modelo de eventos El
modelo de eventos define cundo y cmo tienen lugar las interacciones
con el usuario y el sistema. Captulo 1: Introduccin a la
programacin En Visual FoxPro funcionan juntas la programacin por
procedimientos y la programacin orientada a objetos para permitirle
crear aplicaciones potentes y flexibles. Conceptualmente, puede
imaginarse que la programacin consiste en escribir una secuencia de
instrucciones con el fin de realizar tareas especficas. A un nivel
estructural, la programacin en Visual FoxPro precisa la manipulacin
de los datos almacenados. Si no tiene experiencia en programacin,
este captulo le ayudar a ponerse en marcha. Si ya conoce otros
lenguajes de programacin y desea compararlos con Visual FoxPro, vea
el tema Visual FoxPro y otros lenguajes de programacin. Si desea
una descripcin de la programacin orientada a objetos, consulte el
captulo 3, Programacin orientada a objetos.30/05/2000
3. Manual del programador, Parte 1: Programacin en Visual
FoxPro En este captulo se abordan los temas siguientes: l Ventajas
de la programacin l La mecnica de la programacin en Visual FoxPro l
Conceptos bsicos de programacin l El proceso de la programacin l
Usar procedimientos y funciones definidos por el usuario l Pasos
siguientes Ventajas de la programacin Normalmente, cualquier funcin
que pueda realizar con un programa podr realizarla tambin a mano,
si dispone de suficiente tiempo. Por ejemplo, si desea consultar
informacin sobre un cliente en una tabla de clientes, como por
ejemplo la empresa Ernst Handel, podra hacerlo manualmente si sigue
una secuencia concreta de instrucciones. Para buscar manualmente un
nico pedido en una tabla 1. En el men Archivo, elija Abrir. 2. En
el cuadro Archivos de tipo, elija Tabla. 3. Haga doble clic en
Customer.dbf en la lista de archivos. 4. En el men Ver, elija
Examinar. 5. Desplcese por la tabla, examinando el campo Company de
los registros hasta encontrar Ernst Handel. Mediante programacin
podra conseguir el mismo resultado escribiendo los siguientes
comandos de Visual FoxPro en la ventana Comandos: USE Customer
LOCATE FOR Company = "Ernst Handel" BROWSE Cuando haya localizado
el pedido de esta empresa, tal vez desee incrementar la cantidad
mxima del pedido en un 3%. Para incrementar manualmente la cantidad
mxima del pedido 1. Presione la tecla Tab para desplazarse hasta el
campo max_ord_amt. 2. Multiplique el valor mostrado en el campo
max_ord_amt por 1,03 y escriba el nuevo valor en el campo. Para
conseguir el mismo resultado mediante programacin, escriba el
siguiente comando de Visual FoxPro en la ventana
Comandos:file://C:temp~hh52BB.htm 30/05/2000
4. Manual del programador, Parte 1: Programacin en Visual
FoxPro REPLACE max_ord_amt WITH max_ord_amt * 1,03 Es relativamente
sencillo cambiar la cantidad mxima del pedido para un cliente, ya
sea manualmente o escribiendo las instrucciones en la ventana
Comandos. Sin embargo, suponga que desea incrementar en un 3% la
cantidad mxima de pedido de todos los clientes. Podra hacerlo
manualmente, pero le llevara mucho tiempo y es posible que
cometiese errores. Si especifica las instrucciones correctas en un
archivo de programa, Visual FoxPro podr realizar esta tarea con
rapidez y facilidad, sin cometer ningn error. Programa de ejemplo
para incrementar las cantidades mximas de pedido de todos los
clientes Cdigo Comentarios USE customer Abre la tabla CUSTOMER.
SCAN Examina todos los registros de la tabla y realiza todas las
instrucciones comprendidas entre SCAN y ENDSCAN para cada registro.
REPLACE max_ord_amt WITH ; Incrementa la cantidad mxima de pedido
en un max_ord_amt * 1.03 3%. (El punto y coma (;) indica que el
comando sigue en la lnea siguiente). ENDSCAN Final del cdigo que se
ejecuta para cada registro contenido en la tabla. La ejecucin de un
programa ofrece numerosas ventajas en comparacin con la introduccin
de distintos comandos en la ventana Comandos: l Los programas se
pueden modificar y volver a ejecutar. l Se pueden ejecutar
programas desde los mens, formularios y barras de herramientas. l
Los programas pueden ejecutar otros programas. En las siguientes
secciones se describe la mecnica, los conceptos y los procesos que
subyacen a ste y otros programas de Visual FoxPro. La mecnica de la
programacin en Visual FoxPro Puede programar en Visual FoxPro
escribiendo cdigo: instrucciones en forma de comandos, funciones u
operaciones que Visual FoxPro puede entender. Puede incluir estas
instrucciones en: l La ventana Comandos. l Archivos de programa l
Ventanas de cdigo de eventos o de mtodos en el Diseador de
formularios o en el Diseador de clases l Ventanas de cdigo de
procedimientos en el Diseador de mens l Ventanas de cdigo de
procedimientos en el Diseador de informes30/05/2000
5. Manual del programador, Parte 1: Programacin en Visual
FoxPro Usar la ventana Comandos Puede ejecutar un comando de Visual
FoxPro si lo escribe en la ventana Comandos y presiona ENTRAR. Para
volver a ejecutar el comando, lleve el cursor a la lnea que
contiene el comando y presione nuevamente ENTRAR. Puede ejecutar
varias lneas de cdigo en la ventana Comandos como si constituyeran
un programa. Para ejecutar varias lneas de cdigo en la ventana
Comandos 1. Seleccione las lneas de cdigo. 2. Presione ENTRAR o
elija Ejecutar seleccin en el men emergente. Como la ventana
Comandos es una ventana de edicin, puede modificar comandos con las
herramientas disponibles en Visual FoxPro. Puede modificar,
insertar, eliminar, cortar, copiar o pegar texto en la ventana
Comandos. La ventaja que supone poder escribir cdigo en la ventana
Comandos radica en el hecho de que las instrucciones se ejecutan de
inmediato. No es necesario guardar un archivo y ejecutarlo como un
programa. Adems, las opciones que elige en los mens y los cuadros
de dilogo aparecen en la ventana Comandos como comandos. Puede
copiar y pegar estos comandos en un programa de Visual FoxPro y a
continuacin ejecutar el programa repetidamente, lo cual facilita la
ejecucin de miles de comandos, una y otra vez. Crear programas Un
programa de Visual FoxPro es un archivo de texto que contiene una
serie de comandos. Puede crear un programa en Visual FoxPro de una
de las siguientes maneras: Para crear un programa 1. En el
Administrador de proyectos, seleccione Programas en la ficha Cdigo.
2. Elija Nuevo. O bien 1. En el men Archivo, elija Nuevo. 2. En el
cuadro de dilogo Nuevo, seleccione Programa. 3. Elija Nuevo
archivo. O bien30/05/2000
6. Manual del programador, Parte 1: Programacin en Visual
FoxPro l En la ventana Comandos, escriba: MODIFY COMMAND Visual
FoxPro abrir una nueva ventana denominada Programa1. Podr entonces
escribir su programa en esta ventana. Guardar programas Una vez
creado un programa, asegrese de guardarlo. Para guardar un programa
l En el men Archivo, elija Guardar. Si intenta cerrar un programa
sin antes guardarlo, aparecer un cuadro de dilogo en el que se le
preguntar si desea guardar o descartar los cambios realizados en el
mismo. Si guarda un programa creado a partir del Administrador de
proyectos, el programa se agregar al proyecto. Si guarda un
programa al que todava no ha asignado un nombre, se abrir el cuadro
de dilogo Guardar como, en el que podr especificar el nombre del
programa. Cuando haya guardado el programa, podr ejecutarlo o
modificarlo. Modificar programas Despus de guardar el programa,
podr modificarlo. En primer lugar, abra el programa de una de las
siguientes maneras: Para abrir un programa l Si el programa forma
parte de un proyecto, seleccinelo en el Administrador de proyectos
y elija Modificar. O bien l En el men Archivo, elija Abrir.
Aparecer un cuadro de dilogo en el que se muestra una lista de los
archivos disponibles. En la lista Archivos de tipo, elija Programa.
En la lista de archivos, seleccione el programa que desea modificar
y elija Abrir. O bien l En la ventana Comandos, escriba el nombre
del programa que desea modificar: MODIFY COMMAND miprogram O
bienfile://C:temp~hh52BB.htm 30/05/2000
7. Manual del programador, Parte 1: Programacin en Visual
FoxPro l En la ventana Comandos, escriba: MODIFY COMMAND ? Cuando
aparezca la lista de archivos, seleccione el programa que desea
modificar y a continuacin elija Abrir. Despus de abrir el programa,
podr realizar cambios en el mismo. Cuando haya terminado de
introducir los cambios, asegrese de guardar el programa. Ejecutar
programas Despus de crear un programa, podr ejecutarlo. Para
ejecutar un programa l Si el programa forma parte de un proyecto,
seleccinelo en el Administrador de proyectos y elija Ejecutar. O
bien l En el men Programa, elija Ejecutar. Cuando aparezca la lista
de programas, seleccione el programa que desea ejecutar y a
continuacin elija Ejecutar. O bien l En la ventana Comandos,
escriba DO y el nombre del programa que desea ejecutar: DO
miprogram Escribir cdigo en las herramientas de diseo de Visual
FoxPro El Diseador de formularios, el Diseador de clases y el
Diseador de mens le permiten integrar fcilmente cdigo de programas
mediante la interfaz de usuario, de forma que el cdigo apropiado se
ejecute como respuesta a las acciones del usuario. El Diseador de
informes le permite crear informes complejos y personalizados
integrando cdigo en el archivo del informe. Para aprovechar
plenamente la eficacia de Visual FoxPro, debe utilizar estas
herramientas de diseo. Si desea ms informacin sobre el Diseador de
informes, consulte el captulo 7, Disear informes y etiquetas, del
Manual del usuario. Para obtener informacin ms detallada sobre el
Diseador de formularios, consulte el captulo 3, Programacin
orientada a objetos, de este manual. Para obtener informacin ms
detallada sobre el Diseador de formularios, consulte el captulo 9,
Crear formularios, y si desea ms informacin acerca del Diseador de
mens, consulte el captulo 11, Disear mens y barras de herramientas.
Conceptos bsicos de programacinfile://C:temp~hh52BB.htm
30/05/2000
8. Manual del programador, Parte 1: Programacin en Visual
FoxPro Cuando se programa, se almacenan datos y se manipulan
mediante una serie de instrucciones. Los datos y los contenedores
en los que se almacenan los datos constituyen la materia prima de
la programacin. Las herramientas utilizadas para manipular esta
materia prima son comandos, funciones y operadores. Almacenar datos
Los datos con los que trabaja probablemente incluyan perodos de
tiempo, dinero y elementos contables, as como fechas, nombres,
descripciones, etc. Cada dato corresponde a un determinado tipo, es
decir, pertenece a una categora de datos que se manipula de maneras
similares. Podra trabajar directamente con estos datos sin
almacenarlos, si bien perdera la mayor parte de la flexibilidad y
potencia que ofrece Visual FoxPro. Visual FoxPro aporta numerosos
contenedores de almacenamiento con el fin de ampliar su capacidad
para manipular fcilmente los datos. Los tipos de datos determinan
la manera en que se almacenan los datos y la forma en que se pueden
utilizar tales datos. Puede multiplicar dos nmeros, pero no puede
multiplicar caracteres. Puede imprimir caracteres en maysculas,
pero no puede imprimir nmeros en maysculas. En la tabla siguiente
se muestran algunos de los principales tipos de datos de Visual
FoxPro. Tipos de datos Tipo Ejemplos Numeric 123 3,1415 7 Character
Prueba 123 01/01/98 Logical .T. (verdadero) .F. (falso) Date
{^1998-01-01} DateTime {^1998-01-01 12:30:00 p} Contenedores de
datos Los contenedores de datos le permiten realizar las mismas
operaciones con varios datos. Por ejemplo, sumar las horas que ha
trabajado un empleado, multiplicarlas por el salario por hora y
restar los impuestos para determinar el sueldo que ha percibido el
empleado. Deber realizar estas operaciones para cada empleado y
para cada perodo de pago. Si almacena esta informacin en
contenedores y realiza las operaciones sobre stos, bastar con
sustituir los datos antiguos por los nuevos datos y volver a
ejecutar el mismo programa. En la siguiente tabla se enumeran
algunos de los principales contenedores de datos disponibles en
Visual FoxPro:file://C:temp~hh52BB.htm 30/05/2000
9. Manual del programador, Parte 1: Programacin en Visual
FoxPro Tipo Descripcin Variables Elementos individuales de datos
almacenados en la memoria RAM (memoria de acceso aleatorio) del PC.
Registros de tabla Varias filas de campos predeterminados, cada uno
de los cuales puede contener un dato definido previamente. Las
tablas se guardan en disco. Matrices Varios elementos de datos
almacenados en la memoria RAM. Manipular datos Los contenedores y
los tipos de datos le ofrecen los mdulos que necesita para
manipular los datos. Los elementos finales son los operadores, las
funciones y los comandos. Usar operadores Los operadores se
utilizan para vincular los datos. A continuacin se muestran los
operadores utilizados habitualmente en Visual FoxPro. Operador
Tipos de datos vlidos Ejemplo Resultado = Todos ? n = 7 Imprime .T.
si el valor almacenado en la variable es 7; de lo contrario,
imprime .F. + Numeric, ? "Fox" + "Pro" Imprime FoxPro
Character,Date, DateTime ! or NOT Logical ? !.T. Imprime .F.
(falso) *, / Numeric ? 5 * 5 Imprime 25 ? 25 / 5 Imprime 5 Nota Un
signo de interrogacin (?) situado delante de una expresin imprime
el resultado de la expresin y un carcter de nueva lnea en la
ventana de salida activa, que es normalmente la ventana principal
de Visual FoxPro. Recuerde que debe utilizar el mismo tipo de datos
con cada operador. Las siguientes instrucciones almacenan dos datos
numricos en dos variables. Los nombres de variable empiezan con la
letra n, por lo que se puede determinar de inmediato que contienen
datos numricos, pero puede nombrarlas con cualquier combinacin de
caracteres alfanumricos y caracteres de subrayado. nPrimero = 123
nSegundo = 45file://C:temp~hh52BB.htm 30/05/2000
10. Manual del programador, Parte 1: Programacin en Visual
FoxPro Las instrucciones siguientes almacenan dos datos de
caracteres en dos variables. Los nombres de variable empiezan con
la letra c para indicar que contienen datos de tipo character.
cPrimero = "123" cSegundo = "45" Las dos operaciones siguientes,
suma y concatenacin, producen resultados distintos, ya que el tipo
de datos es diferente en cada una de ellas. ? nPrimero + nSegundo ?
cPrimero + cSegundo Resultado 168 12345 Puesto que cPrimero
contiene caracteres y nSegundo contiene datos numricos, se producir
un error de tipo de datos incorrecto si se intenta ejecutar el
siguiente comando: ? cPrimero + nSegundo Puede evitar este problema
si utiliza funciones de conversin. Por ejemplo, STR( ) devuelve el
valor de tipo Character equivalente de un valor de tipo Numeric,
mientras que VAL( ) devuelve el equivalente numrico de una cadena
de caracteres formada por nmeros. Estas funciones y LTRIM( ), que
elimina los espacios iniciales, le permiten realizar las
operaciones siguientes: ? cPrimero + LTRIM(STR(nSegundo)) ?
VAL(cPrimero) + nSegundo Resultado 12345 168 Usar funciones Las
funciones devuelven un tipo especfico de datos. Por ejemplo, las
funciones STR( ) y VAL( ) utilizadas en la seccin anterior
devuelven valores de tipo Character y Numeric, respectivamente. Al
igual que ocurre con todas las funciones, estos tipos devueltos
estn documentados con las funciones. Hay cinco maneras de llamar a
una funcin de Visual FoxPro: l Asignar a una variable el valor que
devuelve la funcin. La siguiente lnea de cdigo almacena la fecha
actual del sistema en una variable denominada dHoy: dHoy = DATE( )
l Incluir la llamada a la funcin en un comando de Visual FoxPro. El
siguiente comando establece el directorio predeterminado como el
valor devuelto por la funcin GETDIR( ):file://C:temp~hh52BB.htm
30/05/2000
11. Manual del programador, Parte 1: Programacin en Visual
FoxPro CD GETDIR( ) l Imprimir el valor devuelto en la ventana de
salida activa. La siguiente lnea de cdigo imprime la hora actual
del sistema en la ventana principal de Visual FoxPro: ? TIME( ) l
Llamar a la funcin sin almacenar en ningn lugar el valor devuelto.
La siguiente llamada de funcin desactiva el cursor: SYS(2002) l
Incluir la funcin dentro de otra funcin. La siguiente lnea de cdigo
imprime el da de la semana: ? DOW(DATE( )) A continuacin se
enumeran otros ejemplos de funciones utilizados en este captulo:
Funcin Descripcin ISDIGIT( ) Devuelve el valor verdadero (.T.) si
el carcter situado al comienzo de una cadena es un nmero; de lo
contrario, devuelve el valor falso (.F.). FIELD( ) Devuelve el
nombre de un campo. LEN( ) Devuelve el nmero de caracteres de una
expresin de caracteres. RECCOUNT( ) Devuelve el nmero de registros
de la tabla que est activa en este momento. SUBSTR( ) Devuelve el
nmero especificado de caracteres a partir de una cadena de
caracteres, empezando en una posicin especificada de la cadena.
Usar comandos Un comando hace que se realice una determinada accin.
Cada comando dispone de una sintaxis especfica que indica lo que se
debe incluir con el fin de que se ejecute correctamente el comando.
Hay tambin clusulas opcionales asociadas a los comandos que
permiten especificar de forma ms detallada la accin que se desea
realizar. Por ejemplo, el comando USE permite abrir y cerrar
tablas: Sintaxis de USE Descripcin USE Cierra la tabla que aparece
en el rea de trabajo actual. USE customer Abre la tabla CUSTOMER en
el rea de trabajo actual y cierra cualquier tabla que ya est
abiertafile://C:temp~hh52BB.htm 30/05/2000
12. Manual del programador, Parte 1: Programacin en Visual
FoxPro en el rea de trabajo. USE customer IN 0 Abre la tabla
CUSTOMER en la siguiente rea de trabajo disponible. USE customer IN
0 ; Abre la tabla CUSTOMER en la siguiente rea de ALIAS miCliente
trabajo disponible y asigna al rea de trabajo el alias miCliente. A
continuacin se muestran algunos ejemplos de comandos utilizados en
este captulo: Comando Descripcin DELETE Selecciona registros
especificados de una tabla para su eliminacin. REPLACE Sustituye el
valor almacenado en el campo del registro por un nuevo valor. Go
Coloca el puntero de registro en una posicin especfica de la tabla.
Control del flujo del programa Visual FoxPro incluye una categora
especial de comandos que "envuelven" a otros comandos y funciones,
y determinan cundo y con qu frecuencia se ejecutan. Estos comandos
permiten realizar bifurcaciones condicionales y bucles, dos
herramientas de programacin muy eficaces. El siguiente programa
muestra el uso de las bifurcaciones y los bucles condicionales.
Estos conceptos se describen de forma ms detallada despus del
ejemplo. Suponga que su empresa cuenta con 10.000 empleados y desea
conceder a todos aqullos que ganan 3.000.000 de pesetas o ms un
aumento salarial del 3%, y a todos los que ganan menos de 3.000.000
de pesetas un aumento del 6%. El siguiente ejemplo de programa le
permite hacerlo. Este programa presupone que en el rea de trabajo
actual est abierta una tabla que contiene un campo numrico
denominado salario. Si desea obtener informacin sobre las reas de
trabajo, consulte "Usar mltiples tablas" en el captulo 7, Trabajar
con tablas.. Programa de ejemplo para aumentar el salario de los
empleados Cdigo Observaciones SCAN El cdigo comprendido entre SCAN
y ENDSCAN se ejecuta tantas veces como registros haya en la tabla.
Cada vez que se ejecuta el cdigo, el puntero de registro se
desplaza al siguiente registro de la tabla. IF salario >=
3000000 Para cada registro, si el salario es mayor o igual REPLACE
salary WITH ; salario * 1,03 que 3.000.000, este valor se sustituye
por un nuevo salario que es un 3% superior.file://C:temp~hh52BB.htm
30/05/2000
13. Manual del programador, Parte 1: Programacin en Visual
FoxPro Pgina 12 de 83 El signo de punto y coma (;) que aparece
despus de WITH indica que el comando contina en la siguiente lnea.
ELSE Para cada registro, si el salario no es mayor o igual REPLACE
salario WITH ; salario * 1,06 que 3.000.000, se sustituye este
valor por un nuevo salario que es un 6% superior. ENDIF Final de la
instruccin condicional IF. ENDSCAN Final del cdigo que se ejecuta
para cada registro de la tabla. Este ejemplo utiliza comandos de
bifurcacin y bucle condicional para controlar el desarrollo del
programa. Bifurcacin condicional La bifurcacin condicional permite
someter a prueba condiciones y, a continuacin, en funcin del
resultado de la prueba, realizar distintas operaciones. Visual
FoxPro ofrece dos comandos que permiten realizar una bifurcacin
condicional: l IF ... ELSE ... ENDIF l DO CASE ... ENDCASE El cdigo
comprendido entre la instruccin inicial y la instruccin ENDIF o
ENDCASE slo se ejecuta si una condicin lgica se evala como
verdadera (.T.). En el programa de ejemplo, el comando IF se
utiliza para distinguir entre dos estados: o el salario es de
3.000.000 pesetas o ms, o no lo es. Se adoptan diferentes medidas,
dependiendo del estado. En el siguiente ejemplo, si el valor
almacenado en la variable nTempAgua es menor que 100, no se
realizar ninguna accin: * definir una variable lgica como Verdadera
si se cumple una condicin. IF nTempAgua >= 100 lEbullicin = .T.
ENDIF Nota Un asterisco al principio de una lnea de un programa
indica que la lnea es un comentario. Los comentarios ayudan al
programador a recordar la funcin que debe realizar cada segmento de
cdigo, si bien Visual FoxPro los pasa por alto. Si se desea
comprobar varias condiciones posibles, un bloque DO CASE ...
ENDCASE puede resultar ms eficaz que varias instrucciones IF y
adems es ms fcil realizar un seguimiento del mismo. Bucles Un bucle
le permite ejecutar una o ms lneas de cdigo tantas veces como sea
necesario. En Visualfile://C:temp~hh52BB.htm 30/05/2000
14. Manual del programador, Parte 1: Programacin en Visual
FoxPro Pgina 13 de 83 FoxPro hay tres comandos que permiten
realizar bucles: l SCAN ... ENDSCAN l FOR ... ENDFOR l DO WHILE ...
ENDDO Utilice SCAN cuando realice una serie de acciones para cada
uno de los registros de una tabla, como en el ejemplo de programa
descrito anteriormente. El bucle SCAN permite escribir el cdigo una
vez y ejecutarlo para cada registro a medida que el puntero de
registro se desplaza por la tabla. Utilice FOR cuando sepa cuntas
veces debe ejecutarse la seccin de cdigo. Por ejemplo, sabe que una
tabla contiene un nmero especfico de campos. Puesto que la funcin
FCOUNT( ) de Visual FoxPro devuelve este nmero, puede utilizar un
bucle FOR para imprimir los nombres de todos los campos de la
tabla: FOR nRecuento = 1 TO FCOUNT( ) ? FIELD(nRecuento) ENDFOR
Utilice DO WHILE cuando desee ejecutar una seccin de cdigo mientras
cumpla una determinada condicin. Tal vez no sepa cuntas veces debe
ejecutarse el cdigo, pero s sabe cundo debe detenerse la ejecucin.
Por ejemplo, supongamos que dispone de una tabla en la que figuran
los nombres y las iniciales de una serie de personas y desea
utilizar las iniciales para consultar los nombres de las personas.
Surgira un problema la primera vez que intentase agregar una
persona cuyas iniciales fuesen las mismas que las de otra persona
contenida en la tabla. Para resolver este problema, podra agregar
un nmero a las iniciales. Por ejemplo, el cdigo de identificacin de
Miguel Surez podra ser MS. La siguiente persona cuyas iniciales
fuesen las mismas, Margarita Snchez, sera MS1. Si a continuacin
anexase Mara Sanz a la tabla, su cdigo de identificacin sera MS2.
Un bucle DO WHILE permite localizar el nmero correcto que se debe
adjuntar a las iniciales. Programa de ejemplo que utiliza DO WHILE
para generar un nmero de identificacin nico Cdigo Comentarios nAqu
= RECNO() Guardar la posicin del registro. cIniciales =
LEFT(nombre,1) + ; Obtener las iniciales de la persona a partir de
las LEFT(apellido,1) nSufijo = 0 primeras letras de los campos
nombre y apellido. Si es necesario, establecer una variable que
contenga el nmero que se debe agregar al final de las iniciales de
una persona. LOCATE FOR id_persona = cIniciales Comprobar si hay
otra persona en la tabla cuyas iniciales son las mismas. DO WHILE
FOUND( ) Si en otro registro de la tabla hay un valor id_persona
que coincide con cIniciales, lafile://C:temp~hh52BB.htm
30/05/2000
15. Manual del programador, Parte 1: Programacin en Visual
FoxPro Pgina 14 de 83 funcin FOUND( ) devolver el valor verdadero
(.T.) y se ejecutar el cdigo contenido en el bucle DO WHILE. Si no
se encuentra ninguna coincidencia, la siguiente lnea de cdigo que
se ejecute ser la lnea que figura a continuacin de ENDDO. nSufijo =
nSufijo + 1 Preparar un sufijo nuevo y anexarlo al final de las
cIniciales = ; LEFT(cIniciales,2); iniciales. +
ALLTRIM(STR(nSufijo)) CONTINUE CONTINUE hace que se vuelva a
evaluar el ltimo comando LOCATE. El programa comprueba si el nuevo
valor contenido en cIniciales ya existe en el campo id_persona de
otro registro. Si es as, FOUND( ) seguir devolviendo el valor .T. y
se volver a ejecutar el cdigo contenido en el bucle DO WHILE. Si el
nuevo valor contenido en cIniciales es efectivamente nico, FOUND( )
devolver el valor .F. y la ejecucin del programa continuar con la
lnea de cdigo que figura a continuacin de ENDDO. ENDDO Final del
bucle DO WHILE. GOTO nAqu Volver al registro y almacenar el cdigo
de REPLACE id_persona WITH cIniciales identificacin nico en el
campo id_persona. Puesto que no hay manera de saber de antemano
cuntas veces se encontrarn los cdigos de identificacin coincidentes
que ya se estn utilizando, se utiliza el bucle DO WHILE. El proceso
de la programacin Cuando entienda los conceptos bsicos, la
programacin ser un proceso reiterativo. Los pasos se repiten
numerosas veces, perfeccionndose el cdigo a medida que se avanza.
Al principio, someter el cdigo a prueba frecuentemente mediante un
sistema de prueba y tanteo. Cuanto ms conozca el lenguaje, mayor
ser la rapidez con que pueda programar y podr realizar ms pruebas
preliminares mentalmente. Entre los pasos bsicos de la programacin
cabe citar los siguientes: l Definir el problema. l Desglosar el
problema en elementos discretos. l Construir los elementos. l
Comprobar y perfeccionar los elementos. l Ensamblar los
elementos.file://C:temp~hh52BB.htm 30/05/2000
16. Manual del programador, Parte 1: Programacin en Visual
FoxPro Pgina 15 de 83 l Comprobar el programa en su conjunto. A
continuacin se enumeran algunos aspectos que debe tener presentes
al empezar a programar: l Defina claramente el problema antes de
intentar resolverlo. Si no lo hace, acabar por realizar numerosos
cambios, desechar cdigo, tendr que empezar de nuevo o bien terminar
con un resultado que no es realmente lo que deseaba. l Desglose el
problema en pasos manejables, en lugar de intentar resolver todo el
problema de una sola vez. l Pruebe y depure secciones de cdigo a
medida que desarrolla el programa. Compruebe que el cdigo hace lo
que quiere que haga. La depuracin es el proceso de encontrar y
solucionar problemas que impiden que el cdigo se ejecute
correctamente. l Perfeccione los datos y el almacenamiento de datos
para facilitar la manipulacin de estos datos a travs del cdigo del
programa. Esto suele implicar estructurar las tablas de forma
adecuada. En el resto de esta seccin se describen los pasos que
debe seguir para construir un pequeo programa Visual FoxPro.
Definir el problema Antes de poder resolver un problema, debe
formularlo claramente. Algunas veces, si ajusta la formulacin del
problema podr ver ms opciones para resolverlo. Suponga que obtiene
muchos datos de distintos orgenes. Si bien la mayora de los datos
son estrictamente numricos, algunos valores contienen guiones y
espacios en blanco adems de nmeros. Suponga que quiere eliminar
todos los espacios en blanco y los guiones de dichos campos y
guardar los datos numricos. En lugar de intentar eliminar los
espacios en blanco y los guiones de los datos originales, podra
formular el objetivo del programa como: Objetivo Reemplazar los
valores existentes de un campo por otros valores que contengan todo
lo que contenan los valores originales, excepto los espacios en
blanco y los guiones. Esta formulacin evita la dificultad que
supone manipular una cadena de caracteres cuya longitud sigue
cambiando a medida que trabaja con ella. Descomponer el problema
Puesto que tiene que indicar instrucciones especficas a Visual
FoxPro en trminos de operaciones, comandos y funciones, debe
descomponer el problema en pasos discretos. La tarea ms discreta
para este problema sera examinar cada carcter de la cadena. Hasta
que pueda examinar un carcter individualmente, no podr determinar
si desea guardarlo. Una vez que examine un carcter, deber comprobar
si se trata de un guin o de un espacio en blanco. En este momento,
quiz desee refinar la declaracin del problema. Y si obtuviera ms
adelante datos que contienen parntesis de apertura y de cierre? Y
si desea deshacerse de los smbolos de moneda, las comas y los
puntos? Cuanto ms genrico pueda hacer el cdigo,
msfile://C:temp~hh52BB.htm 30/05/2000
17. Manual del programador, Parte 1: Programacin en Visual
FoxPro Pgina 16 de 83 trabajo se ahorrar de ahora en adelante; lo
principal es ahorrar trabajo. He aqu una formulacin del problema
vlida para una variedad mucho mayor de datos: Objetivo refinado
Reemplazar los valores existentes en un campo por otros valores que
contengan nicamente los caracteres numricos de los valores
originales. Con esta formulacin, ahora puede volver a plantear el
problema a nivel de carcter: si el carcter es numrico, guardar el
carcter; si el carcter es no numrico, pasar al siguiente carcter.
Cuando haya construido una cadena que slo contenga los elementos
numricos de la cadena inicial, podr reemplazar la primera cadena y
pasar al siguiente registro hasta que haya terminado con todos los
datos. Para resumir, el problema se descompone en los siguientes
elementos: 1. Examinar cada carcter. 2. Decidir si el carcter es
numrico o no. 3. Si es numrico, copiarlo a la segunda cadena. 4.
Cuando haya terminado con todos los caracteres de la cadena
original, reemplazar la cadena original con la cadena que slo
contiene valores numricos. 5. Repetir estos pasos para todos los
registros de la tabla. Construir los elementos Cuando sepa qu debe
hacer, puede empezar a formular los elementos en trminos de
comandos, funciones y operadores de Visual FoxPro. Como los
comandos y funciones se usan para manipular datos, tiene algunos
datos de prueba para trabajar con ellos. Los datos de prueba sirven
para simular los datos verdaderos lo mejor posible. Para este
ejemplo puede almacenar en una variable una cadena de prueba
introduciendo el siguiente comando en la ventana Comandos: cTest =
"123-456-7 89 0" Examinar cada carcter En primer lugar desea buscar
un nico carcter en la cadena. Para obtener una lista de funciones
que se pueden utilizar para manipular cadenas, vea Funciones de
carcter. Ver tres funciones que devuelven determinadas secciones de
una cadena: LEFT( ), RIGHT( ) y SUBSTR( ). De estas tres funciones,
SUBSTR( ) devuelve caracteres de cualquier parte de la cadena.
SUBSTR( ) usa tres argumentos o parmetros: la cadena, la ubicacin
inicial dentro de la cadena y el nmero de caracteres que se deben
devolver de la cadena, empezando por la ubicacin inicial. Para
comprobar si SUBSTR( ) va a hacer lo que usted quiere, podra
escribir los siguientes comandos en lafile://C:temp~hh52BB.htm
30/05/2000
18. Manual del programador, Parte 1: Programacin en Visual
FoxPro Pgina 17 de 83 ventana Comandos: ? SUBSTR(cTest, 1, 1) ?
SUBSTR(cTest, 3, 1) ? SUBSTR(cTest, 8, 1) Resultado 1 3 - Puede ver
que en la ventana principal de Visual FoxPro se muestran el primer,
el tercer y el octavo caracteres de la cadena de prueba. Para hacer
eso mismo varias veces, utilice un bucle. Puesto que la cadena de
prueba tiene un nmero determinado de caracteres (14), puede
utilizar un bucle FOR. El contador del bucle FOR se incrementa cada
vez que se ejecuta el cdigo del bucle, por lo que puede utilizar el
contador de la funcin SUBSTR( ). Puesto que en la ventana Comandos
no puede comprobar las construcciones de bucles, deber probar la
siguiente seccin de cdigo en un programa de ejemplo. Para crear un
programa nuevo 1. Escriba el siguiente comando en la ventana
Comandos: MODIFY COMMAND numonly 2. En la ventana que aparecer,
escriba las siguientes lneas de cdigo: FOR nCnt = 1 TO 14 ?
SUBSTR(cTest, nCnt, 1) ENDFOR Ahora que ha creado un programa, ya
puede ejecutarlo. Para ejecutar un programa 1. En la ventana del
programa abierto, presione CTRL+E. 2. Si aparece un cuadro de
dilogo Guardar, elija Aceptar. Cuando ejecute este programa, los
caracteres individuales de la cadena de prueba se imprimirn en
lneas distintas en la ventana principal de Visual FoxPro. Comprobar
parte del programafile://C:temp~hh52BB.htm 30/05/2000
19. Manual del programador, Parte 1: Programacin en Visual
FoxPro Pgina 18 de 83 Ya ha completado la primera tarea. Ahora
puede examinar cada carcter de la cadena. Decidir si el carcter es
numrico Cuando tenga un nico carcter de la cadena, debe saber si se
trata de un nmero. Puede hacerlo con ISDIGIT( ). Puede probar los
siguientes comandos en la ventana Comandos: ? ISDIGIT(2) ?
ISDIGIT(-) ? ISDIGIT(SUBSTR(cTest, 3, 1)) Resultado .T. .F. .T. De
este resultado se desprende que 2 es un nmero, no es un nmero y el
tercer carcter, 3, es un nmero. Si el carcter es numrico, copiarlo
a la segunda cadena Ahora que puede examinar los caracteres y
determinar si son o no numricos, necesita una
variablefile://C:temp~hh52BB.htm 30/05/2000
20. Manual del programador, Parte 1: Programacin en Visual
FoxPro Pgina 19 de 83 para almacenar los valores numricos:
cNumOnly. Para crear la variable, debe asignarle un valor inicial,
una cadena de longitud cero: cNumOnly = "" A medida que el bucle
FOR recorre la cadena, es conveniente crear otra variable para
almacenar temporalmente cada carcter de la cadena a medida que sta
se manipula: cCharacter = SUBSTR(cTest, nCnt, 1) Sugerencia
Normalmente es mejor almacenar en una variable de memoria el
resultado de un clculo, evaluacin o funcin. Entonces puede
manipular la variable en lugar de tener que repetir el clculo o la
evaluacin. La siguiente lnea de cdigo puede utilizarse cada vez que
se encuentra un nmero para sumar el nmero a la segunda cadena:
cNumOnly = cNumOnly + cCharacter Hasta ahora, el programa es el
siguiente: cNumOnly = "" FOR nCnt = 1 TO 14 cCharacter =
SUBSTR(cTest, nCnt, 1) IF ISDIGIT(cCharacter) cNumOnly = cNumOnly +
cCharacter ENDIF ENDFOR Prueba de los elementos Si agrega un par de
comandos al final para imprimir las cadenas y ejecutar el programa,
podr ver que el programa funciona con la cadena de prueba: cNumOnly
= "" FOR nCnt = 1 TO 14 cCharacter = SUBSTR(cTest, nCnt, 1) IF
ISDIGIT(cCharacter) cNumOnly = cNumOnly + cCharacter ENDIF ENDFOR ?
cTest ? cNumOnly Resultado 123-456-7 89 0 1234567890 El resultado
parece correcto. Pero si cambia la cadena de prueba mientras
comprueba los elementos, puede tener problemas. Escriba el
siguiente comando en la ventana Comandos y ejecute de nuevo el
programa:file://C:temp~hh52BB.htm 30/05/2000
21. Manual del programador, Parte 1: Programacin en Visual
FoxPro Pgina 20 de 83 cTest = "456-789 22" El programa generar un
mensaje de error. El bucle FOR ha intentado ejecutarse 14 veces,
pero en la cadena slo haba 10 caracteres. Necesita una forma de
ajustar las longitudes variables de las cadenas. Use LEN( ) para
devolver el nmero de caracteres de una cadena. Si sustituye este
comando en el bucle FOR, ver que el programa funciona correctamente
con ambas cadenas de prueba: cNumOnly = "" FOR nCnt = 1 TO
LEN(cTest) cCharacter = SUBSTR(cTest, nCnt, 1) IF
ISDIGIT(cCharacter) cNumOnly = cNumOnly + cCharacter ENDIF ENDFOR ?
cTest ? cNumOnly Agrupar los elementos Para completar la solucin de
programacin para este problema, quiz desee volver a leer sus datos
de una tabla. Cuando tenga una tabla, explore los registros y
aplique su cdigo de programa a un campo de la tabla, en lugar de a
una variable. En primer lugar, podra crear una tabla temporal que
contuviera diversas cadenas de prueba. Dicha tabla podra contener
un nico campo de caracteres llamado Testfield y cuatro o cinco
registros: Contenido de Testfield 123-456-7 89 0 -9221 9220 94321
99- 456-789 22 000001 98-99-234 Cuando sustituya el nombre de la
cadena de prueba por el nombre del campo, el programa ser similar
al siguiente: FOR nCnt = 1 TO LEN(TestField) cCharacter =
SUBSTR(TestField, nCnt, 1) IF ISDIGIT(cCharacter) cNumOnly =
cNumOnly + cCharacter ENDIF ENDFOR ? TestField ? cNumOnly Puede
ajustar manualmente el puntero de registro si examina la tabla y se
desplaza por ella. Cuando el puntero de registro est en cada uno de
los registros, el programa funcionar de la forma deseada. O bien,
ahora puede envolver el cdigo de desplazamiento por la tabla en el
resto de su programa: SCAN cNumOnly = "" FOR nCnt = 1 TO
LEN(TestField) cCharacter = SUBSTR(TestField, nCnt, 1) IF
ISDIGIT(cCharacter)file://C:temp~hh52BB.htm 30/05/2000
22. Manual del programador, Parte 1: Programacin en Visual
FoxPro Pgina 21 de 83 cNumOnly = cNumOnly + cCharacter ENDIF ENDFOR
? TestField ? cNumOnly ? ENDSCAN Resultado 123-456-7 89 0
1234567890 456-789 22 45678922 -9221 9220 94321 99- 922192209432199
000001 98-99-234 0000019899234 Comprobar todo el programa En lugar
de imprimir la cadena al final del programa, quiz desee guardarla
en la tabla. Para ello, utilice la siguiente lnea de cdigo: REPLACE
TestField WITH cNumOnly El programa completo ser el siguiente: SCAN
cNumOnly = "" FOR nCnt = 1 TO LEN(TestField) cCharacter =
SUBSTR(TestField, nCnt, 1) IF ISDIGIT(cCharacter) cNumOnly =
cNumOnly + cCharacter ENDIF ENDFOR REPLACE TestField WITH cNumOnly
ENDSCAN Cuando tenga el programa completo, necesitar probarlo con
los datos de ejemplo antes de probarlo con los datos reales.
Aumentar la robustez del programa Un programa robusto hace lo que
usted quiere que haga, pero tambin se anticipa a posibles problemas
y se encarga de ellos. Este programa hace lo que usted quiere, pero
hace algunas suposiciones que deben ser verdaderas para que
funcione: l Hay una tabla abierta en el rea de trabajo actual. l La
tabla tiene un campo de caracteres llamado TestField. Si la tabla
no est abierta en el rea de trabajo actual o si la tabla no tiene
un campo de caracteres confile://C:temp~hh52BB.htm 30/05/2000
23. Manual del programador, Parte 1: Programacin en Visual
FoxPro Pgina 22 de 83 el nombre esperado, el programa generar un
mensaje de error y no realizar la tarea prevista. Programa para
eliminar los caracteres no numricos de todos los registros de un
campo Cdigo Comentarios lFieldOK = .F. Esta variable determina si
existen las condiciones necesarias para que el programa funcione.
Inicialmente se establece la variable como falsa (.F.) para suponer
que las condiciones necesarias no existen. FOR nCnt = 1 TO FCOUNT(
) Esta seccin de cdigo recorre todos los campos IF FIELD(nCnt) = ;
UPPER("TestField") de la tabla actual hasta que encuentra un campo
IF TYPE("TestField") = "C" de caracteres llamado TestField. En
cuanto se lFieldOK = .T. encuentra el campo correcto, lFieldOK se
ENDIF establece como verdadera (.T.) y EXIT finaliza EXIT ENDIF el
bucle (no hay ninguna razn para continuar ENDFOR con la comprobacin
una vez identificado el campo correcto). Si ningn campo cumple el
criterio, lFieldOK seguir siendo falso (.F.). IF lFieldOK La seccin
de conversin del programa slo se ejecuta si en la tabla activa
actualmente hay un campo de caracteres llamado TestField. SCAN El
cdigo de conversin. cNumOnly = "" FOR nCnt = 1 TO LEN(TestField)
cCharacter = ; SUBSTR(TestField, nCnt, 1) IF ISDIGIT(cCharacter)
cNumOnly = cNumOnly + ; cCharacter ENDIF ENDFOR REPLACE TestField
WITH ; cNumOnly ENDSCAN ENDIF Fin de la condicin IF lFieldOK. La
mayor limitacin de este programa es que slo puede utilizarlo para
un campo. Si desea eliminar los caracteres no numricos de un campo
distinto de TestField, tendr que recorrer el programa y cambiar
cada aparicin de TestField por el nombre del otro campo. Convertir
el programa a un procedimiento, segn se explica en las prximas
secciones, permite hacer que el cdigo que ha escrito sea ms genrico
y ms reutilizable, con lo que ahorrar trabajo ms
adelante.file://C:temp~hh52BB.htm 30/05/2000
24. Manual del programador, Parte 1: Programacin en Visual
FoxPro Pgina 23 de 83 Usar procedimientos y funciones definidas por
el usuario Los procedimientos y funciones permiten mantener en un
nico lugar el cdigo que utiliza con frecuencia y llamarlo a travs
de su aplicacin siempre que lo necesite. Esto hace que su cdigo sea
ms fcil de leer y mantener, ya que en un procedimiento el cambio se
realiza una sola vez, no varias veces como ocurre en un programa.
En Visual FoxPro, los procedimientos son similares a ste: PROCEDURE
miproc * Esto es un comentario, pero podra ser cdigo ejecutable
ENDPROC Tradicionalmente, los procedimientos contienen cdigo que
usted escribe para realizar una operacin y funciones que calculan y
devuelven un valor. En Visual FoxPro, las funciones son similares a
los procedimientos: FUNCTION mifuncin * Esto es un comentario, pero
podra ser cdigo ejecutable ENDFUNC Puede incluir procedimientos y
funciones en un archivo de programa distinto o al final de un
archivo de programa que contenga cdigo normal de programa. En un
archivo de programa no puede tener cdigo ejecutable de programa a
continuacin de los procedimientos y las funciones. Si incluye sus
procedimientos y funciones en un archivo de programa distinto, podr
hacer accesibles estos procedimientos y funciones desde su programa
si utiliza el comando SET PROCEDURE TO. Por ejemplo, para un
archivo llamado FUNPROC.PRG, utilice el siguiente comando en la
ventana Comandos: SET PROCEDURE TO funproc.prg Llamar a un
procedimiento o a una funcin Hay dos formas de llamar a un
procedimiento o a una funcin en sus programas: l Utilizar el
comando DO. Por ejemplo: DO miproc O bien l Incluir detrs del
nombre de la funcin un par de parntesis. Por ejemplo: mifuncin( )
Cada uno de estos mtodos puede ampliarse enviando o recibiendo
valores desde el procedimiento o la funcin.file://C:temp~hh52BB.htm
30/05/2000
25. Manual del programador, Parte 1: Programacin en Visual
FoxPro Pgina 24 de 83 Enviar valores a un procedimiento o a una
funcin Para enviar valores a procedimientos o funciones se incluyen
parmetros. Por ejemplo, el procedimiento siguiente acepta un solo
parmetro: PROCEDURE miproc( cString ) * La lnea siguiente muestra
un mensaje MESSAGEBOX ("miproc" + cString) ENDPROC Nota Incluir los
parmetros dentro de los parntesis en la lnea de definicin de un
procedimiento o una funcin, por ejemplo PROCEDURE miproc(cString),
indica que el parmetro tiene alcance local al procedimiento o la
funcin. Tambin puede permitir que una funcin o un procedimiento
acepte parmetros de alcance local mediante LPARAMETERS. Los
parmetros funcionan de manera idntica en una funcin. Para enviar un
valor como un parmetro de este procedimiento o a una funcin, podra
utilizar una cadena o una variable que contuviera una cadena, como
se muestra en la tabla siguiente. Transferencia de parmetros Cdigo
Comentarios DO miproc WITH cTestString Llama a un procedimiento y
transfiere una DO miproc WITH "cadena de prueba" variable de
caracteres o un literal de cadena. mifuncin("cadena de prueba")
Llama a una funcin y transfiere una copia de mifuncin( cTestString
) una cadena literal o una variable de caracteres. Nota Si llama un
procedimiento o funcin sin usar el comando DO, la configuracin de
UDFPARMS controla cmo se transfieren los parmetros. De forma
predeterminada, UDFPARMS se establece como VALUE, por lo que se
transferirn copias de los parmetros. Cuando utilice DO, se emplear
el parmetro real (el parmetro se transfiere por referencia) y
cualquier cambio realizado en el procedimiento o en la funcin se
reflejarn en los datos originales, cualquiera que sea la
configuracin de UDFPARMS. Puede enviar mltiples valores a un
procedimiento o funcin si los separa mediante comas. Por ejemplo,
el siguiente procedimiento espera tres parmetros: una fecha, una
cadena de caracteres y un nmero. PROCEDURE miproc( dDate, cString,
nTimesToPrint ) FOR nCnt = 1 to nTimesToPrint ? DTOC(dDate) + " " +
cString + " " + STR(nCnt) ENDFOR ENDPROC Podra llamar a este
procedimiento mediante la siguiente lnea de cdigo: DO miproc WITH
DATE(), "Hola", 10file://C:temp~hh52BB.htm 30/05/2000
26. Manual del programador, Parte 1: Programacin en Visual
FoxPro Pgina 25 de 83 Recibir valores desde una funcin El valor
devuelto de forma predeterminada es verdadero (.T.), pero puede
utilizar el comando RETURN para devolver cualquier valor. Por
ejemplo, la siguiente funcin devuelve una fecha correspondiente a
dos semanas despus de la fecha que se ha pasado como parmetro.
FUNCTION plus2weeks PARAMETERS dDate RETURN dDate + 14 ENDFUNC La
siguiente lnea de cdigo almacena el valor devuelto desde esta
funcin en una variable: dDeadLine = plus2weeks(DATE()) En la tabla
siguiente se muestran las formas en que puede almacenar o mostrar
valores devueltos por una funcin. Manipular valores devueltos Cdigo
Comentarios var = mifuncin( ) Almacena en una variable el valor
devuelto por la funcin. ? mifuncin( ) Imprime en la ventana activa
de salida el valor devuelto por la funcin. Comprobar parmetros en
un procedimiento o en una funcin Es conveniente comprobar que los
parmetros enviados a su procedimiento o a su funcin son los que
espera recibir. Puede utilizar las funciones TYPE( ) y PARAMETERS(
) para comprobar el tipo y el nmero de parmetros enviados a su
procedimiento o a su funcin. El ejemplo de la seccin anterior
necesita recibir un parmetro de tipo Fecha. Puede utilizar la
funcin TYPE( ) para asegurarse de que el valor que su funcin recibe
es del tipo adecuado. FUNCTION plus2weeks( dDate ) IF TYPE("dDate")
= "D" RETURN dDate + 14 ELSE MESSAGEBOX( "requiere un parmetro de
tipo Fecha" ) RETURN {} && Devuelve una fecha vaca ENDIF
ENDFUNC Si un procedimiento espera menos parmetros de los que
recibe, Visual FoxPro generar un mensaje de error. Por ejemplo, si
especific dos parmetros pero llam al procedimiento con tres
parmetros, obtendr un mensaje de error. Pero si un procedimiento
espera ms parmetros de los que recibe, los parmetros adicionales
simplemente se inicializarn como falso (.F.). Puesto que no hay
ninguna forma de decir si el ltimo parmetro se estableci como falso
(.F.) o se omiti, el siguientefile://C:temp~hh52BB.htm
30/05/2000
27. Manual del programador, Parte 1: Programacin en Visual
FoxPro Pgina 26 de 83 procedimiento comprueba que se ha enviado el
nmero correcto de parmetros: PROCEDURE SaveValue( cStoreTo,
cNewVal, lIsInTable ) IF PARAMETERS( ) < 3 MESSAGEBOX( "No se
han pasado suficientes parmetros". ) RETURN .F. ENDIF IF lIsInTable
REPLACE (cStoreTo) WITH (cNewVal) ELSE &cStoreTo = cNewVal
ENDIF RETURN .T. ENDPROC Convertir el programa NUMONLY en una
funcin NUMONLY.PRG, el programa de ejemplo descrito en la seccin El
proceso de la programacin, puede hacerse ms robusto y til si crea
una funcin para la parte del programa que elimina los caracteres no
numricos de una cadena. Procedimiento de ejemplo para devolver
caracteres numricos de una cadena Cdigo Comentarios FUNCTION
NumbersOnly( cMixedVal ) Principio de la funcin, que acepta una
cadena de caracteres. cNumOnly = "" Crea una cadena que slo tiene
los caracteres FOR nCnt = 1 TO LEN(cMixedVal) cCharacter = ;
numricos de la cadena original. SUBSTR(cMixedVal, nCnt, 1) IF
ISDIGIT(cCharacter) cNumOnly = ; cNumOnly + cCharacter ENDIF ENDFOR
RETURN cNumOnly Devuelve la cadena que slo tiene caracteres
numricos. ENDFUNC Fin de la funcin. Adems de permitirle utilizar
este cdigo en mltiples situaciones, esta funcin mejora la
legibilidad del programa: SCAN REPLACE FieldName WITH
NumbersOnly(FieldName) ENDSCAN O, ms sencillo an: REPLACE ALL
FieldName WITH NumbersOnly(FieldName)file://C:temp~hh52BB.htm
30/05/2000
28. Manual del programador, Parte 1: Programacin en Visual
FoxPro Pgina 27 de 83 Cmo avanzar La programacin por
procedimientos, junto con la programacin orientada a objetos y las
herramientas de diseo de Visual FoxPro, pueden ayudarle a programar
una verstil aplicacin de Visual FoxPro. El resto de este manual
explica temas con los que se encontrar a medida que programe
aplicaciones de Visual FoxPro. Para obtener ms informacin acerca de
la programacin orientada a objetos, consulte el captulo 3,
Programacin orientada a objetos. Para aprender a disear formularios
con el Diseador de formularios, consulte el captulo 9,Crear
formularios. Captulo 2: Programar una aplicacin Una aplicacin de
Visual FoxPro incluye normalmente una o ms bases de datos, un
programa principal que configura el entorno del sistema para la
aplicacin y una interfaz de usuario compuesta por formularios,
barras de herramientas y mens. Las consultas y los informes
permiten que los usuarios extraigan informacin de sus datos. Este
captulo trata los temas siguientes: l Disear la aplicacin l Crear
bases de datos l Crear clases l Proporcionar acceso a la
funcionalidad l Proporcionar acceso a la informacin l Pruebas y
depuracin l Para obtener informacin acerca de la programacin de
aplicaciones con el Generador de aplicaciones y el Marco de
aplicaciones mejorado, vea Programar aplicaciones con el Marco de
aplicaciones. Disear la aplicacin Un diseo apropiado ahorra tiempo,
esfuerzo, dinero y permite mantener la cordura al programar. Cuanto
ms implique a los usuarios en el proceso de diseo, mejor. No
importa lo cuidadosamente que se disee; aun as, acabar refinando
las especificaciones a medida que avance el proyecto y los usuarios
le proporcionen informacin adicional. Algunas de las decisiones de
diseo que tome afectarn a la forma en que crear elementos de la
aplicacin. Quin utilizar la aplicacin? Cul es el centro de
actividad del usuario? Con qu cantidad de datos se supone que se
trabajar? Se utilizarn servidores de datos de apoyo o los datos
sern exclusivamente locales para un nico usuario o para mltiples
usuarios a travs de una red? Considere estos factores antes de
avanzar demasiado en el proyecto. Actividades frecuentes de
usuariofile://C:temp~hh52BB.htm 30/05/2000
29. Manual del programador, Parte 1: Programacin en Visual
FoxPro Pgina 28 de 83 Incluso si sus usuarios finales trabajan con
clientes, pedidos y piezas, lo que determinar la forma en que la
aplicacin deber tratar los datos es el modo en que los usuarios
trabajan con esa informacin. Un formulario de entrada de pedidos,
como el de Tastrade.app (en el directorio ...SamplesVfp98 Tastrade
de Visual Studio), puede ser necesario para algunas aplicaciones,
pero no sera una buena herramienta para administrar inventarios o
para hacer un seguimiento de las ventas, por ejemplo. Tamao de la
base de datos Deber pensar ms en el rendimiento si trata con
grandes conjuntos de datos. En el captulo 15, Optimizar
aplicaciones, se explican los mtodos para optimizar el rendimiento.
Tambin puede desear ajustar el modo en que los usuarios pueden
desplazarse por los datos. Si tiene veinte o treinta registros en
una tabla, est bien que permita que los usuarios desplacen el
puntero de registro de una tabla un registro cada vez. Si tiene
veinte o treinta mil registros, deber proporcionar otros sistemas
para obtener los datos deseados: agregar listas o cuadros de
dilogos de bsqueda, filtros, consultas personalizadas, etc. El
captulo 10, Usar controles, explica la forma de utilizar una lista
para seleccionar registros especficos de una tabla. En el captulo
8, Crear vistas, se explica la creacin de consultas parametrizadas.
Usuario individual frente a mltiples usuarios Es conveniente crear
la aplicacin pensando que mltiples usuarios tendrn acceso simultneo
a la base de datos. Visual FoxPro facilita la programacin para
acceso compartido. En el captulo 17, Programar para acceso
compartido, se describen tcnicas para permitir que varios usuarios
tengan acceso simultneo a la base de datos. Consideraciones
internacionales Si sabe que su aplicacin slo se utilizar en el
entorno de un nico idioma, no debe preocuparse de la
internacionalizacin. Por otra parte, si desea ampliar su mercado, o
si sus usuarios deben trabajar con datos o configuraciones de
entorno internacionales, deber tener en cuenta estos factores al
crear la aplicacin. En el captulo 18, Programar aplicaciones
internacionales, se explican los puntos que debe tener en cuenta
cuando programe aplicaciones internacionales. Datos locales frente
a datos remotos Si su aplicacin trata con datos remotos, deber
administrarlos de forma diferente a como administrara los datos
nativos de Visual FoxPro. En el captulo 8, Crear vistas, se explica
la forma de crear vistas para datos locales o remotos. En la parte
6 del Manual del programador, Crear soluciones cliente-servidor, se
explica cmo disear aplicaciones que trabajen sin problemas con
datos remotos. Descripcin general del proceso El proceso de crear
una aplicacin es muy repetitivo. Puesto que no hay dos aplicaciones
exactamente iguales, lo que har probablemente ser definir
prototipos y refinar algunos componentes varias veces antes de
obtener un producto final. Las expectativas de los usuarios
finales, o sus solicitudes, tambin pueden cambiar, lo que har
necesario redefinir aspectos de la aplicacin. Adems, nadie escribe
cdigo libre de errores, por lo que las pruebas y la depuracin
conducen a algn tipo de rediseo ofile://C:temp~hh52BB.htm
30/05/2000
30. Manual del programador, Parte 1: Programacin en Visual
FoxPro Pgina 29 de 83 rescritura. El proceso de creacin de una
aplicacin Adems de tener en cuenta la imagen general durante la
fase de diseo, tendrn que decidir cules son las funciones
necesarias, qu datos estn implicados y cmo debe estar estructurada
la base de datos. Tendr que disear una interfaz para que el usuario
tenga acceso a la funcionalidad de la aplicacin. Puede crear
informes y consultas para que los usuarios puedan extraer
informacin til de sus datos. Iniciar la programacin Despus de haber
pensado qu componentes son necesarios en la aplicacin, es posible
que quiera configurar un conjunto de directorios y un proyecto para
organizar los archivos componentes que desea crear para la
aplicacin. Puede crear el conjunto de directorios mediante el
Explorador de Windows y puede crear el proyecto en el Administrador
de proyectos o usar el Asistente para aplicaciones para
configurarlos a la vez. Este nuevo Asistente para aplicaciones abre
el Generador de aplicaciones para que pueda personalizar an ms un
proyecto y los componentes que inicie en el Asistente. Por
compatibilidad con versiones anteriores, puede elegir el Asistente
para aplicaciones (5.0) anterior. Usar el Administrador de
proyectosfile://C:temp~hh52BB.htm 30/05/2000
31. Manual del programador, Parte 1: Programacin en Visual
FoxPro Pgina 30 de 83 El Administrador de proyectos permite
compilar la aplicacin completa. En la fase de programacin de la
aplicacin, el Administrador de proyectos facilita el diseo, la
modificacin y la ejecucin de los componentes individuales de su
aplicacin. El Administrador de proyectos Cuando utilice el
Administrador de proyectos, podr: l Modificar y ejecutar partes de
su aplicacin (formularios, mens, programas) con tan slo algunos
clics. l Arrastrar clases, tablas y campos desde el Administrador
de proyectos hasta el Diseador de formularios o el Diseador de
clases. l Arrastrar clases entre bibliotecas de clases. l Ver y
modificar fcilmente sus tablas y bases de datos. l Agregar
descripciones para los componentes de la aplicacin. l Arrastrar y
colocar elementos entre proyectos. Para obtener informacin
detallada acerca del uso del Administrador de proyectos, consulte
el captulo 1, Introduccin, del Manual del usuario. Para obtener
informacin acerca de la compilacin de aplicaciones, consulte el
captulo 13, Compilar una aplicacin, en este manual. Crear bases de
datos Puesto que una aplicacin de base de datos depende tanto de
los datos subyacentes, la mejor forma de empezar a disear su
aplicacin es comenzar por los datos. Puede configurar su propia
base de datos y determinar cules sern las relaciones entre las
tablas, qu reglas comerciales va a exigir, etc.
antesfile://C:temp~hh52BB.htm 30/05/2000
32. Manual del programador, Parte 1: Programacin en Visual
FoxPro Pgina 31 de 83 de disear cualquier componente de interfaz o
de manipulacin de datos. La creacin de una estructura slida de la
base de datos har que el trabajo de programacin sea mucho ms
sencillo. En el captulo 5, Disear bases de datos, el captulo 6,
Crear bases de datos y el captulo 7, Trabajar con tablas, se
explican los temas de diseo y uso de Visual FoxPro para disear
tablas y bases de datos efectivas y eficaces. Crear clases Puede
crear una aplicacin robusta, orientada a objetos y controlada por
eventos utilizando nicamente las clases de base de Visual FoxPro.
Es posible que no tenga que crear una clase, pero desear hacerlo.
Adems de hacer que el cdigo sea ms manejable y sencillo de
mantener, una biblioteca de clases slida le permite crear
rpidamente prototipos e incorporar funciones a una aplicacin. Puede
crear clases en un archivo de programa, en el Diseador de
formularios (mediante el comando Guardar como clase del men
Archivo) o en el Diseador de clases. El captulo 3, Programacin
orientada a objetos, trata algunos de los beneficios de la creacin
de clases y detalla su creacin con el Diseador de clases o mediante
programacin. Proporcionar acceso a la funcionalidad La satisfaccin
del usuario se ver influenciada en gran medida por la interfaz que
le proporcione para la funcionalidad de su aplicacin. Puede tener
un modelo de clases muy limpio, cdigo muy elegante y soluciones muy
inteligentes para los problemas difciles de su aplicacin, pero esto
casi siempre est oculto a los clientes. Lo que ellos ven es la
interfaz que usted les proporciona. Afortunadamente, las
herramientas de diseo de Visual FoxPro facilitan la creacin de
interfaces atractivas y ricas en caractersticas. La interfaz de
usuario consiste principalmente en formularios, barras de
herramientas y mens. Puede asociar toda la funcionalidad de su
aplicacin con controles o comandos de men en la interfaz. En el
captulo 9, Crear formularios, se describe la creacin de formularios
y conjuntos de formularios. La utilizacin de controles de Visual
FoxPro en los formularios se trata en el captulo 10, Usar
controles. Consulte el captulo 11, Disear mens y barras de
herramientas, para dar los ltimos retoques a la aplicacin.
Proporcionar acceso a la informacin Probablemente muestre cierta
informacin para los usuarios en formularios, pero tambin desear
ofrecer a los usuarios la posibilidad de especificar exactamente la
informacin que desean ver, as como la opcin de imprimirla en
informes o etiquetas. Las consultas, especialmente las consultas
que aceptan parmetros definidos por el usuario, permiten a los
usuarios tener ms control sobre sus datos. Los informes permiten a
los usuarios imprimir imgenes totales, parciales o de resumen de
sus datos. Los controles ActiveX y la automatizacin permiten que su
aplicacin comparta informacin y funciones con otras aplicaciones.
El Diseador de consultas y el Diseador de informes se describen en
los captulos 4 a 7 del Manual del usuario. En el captulo 12 de este
manual, Agregar consultas e informes, se explica la integracin de
consultas e informes en una aplicacin. El captulo 16, Agregar OLE
describe la integracin defile://C:temp~hh52BB.htm 30/05/2000
33. Manual del programador, Parte 1: Programacin en Visual
FoxPro Pgina 32 de 83 OLE en una aplicacin. Probar y depurar La
prueba y depuracin es algo que la mayora de los programadores hace
en cada paso del proceso de desarrollo. Es conveniente probar y
depurar a medida se va avanzando. Si crea un formulario, querr
asegurarse de que ste hace lo que se desea antes de continuar con
otros elementos de su aplicacin. En el captulo 14, Probar y depurar
aplicaciones, se explica el uso de las herramientas de depuracin de
Visual FoxPro para depurar sus aplicaciones y se ofrecen
sugerencias para que el proceso resulte ms sencillo. Captulo 3:
Programacin orientada a objetos Aunque Visual FoxPro admite la
programacin estndar por procedimientos, se ha ampliado la capacidad
del lenguaje para proporcionar la potencia y la flexibilidad
propias de la programacin orientada a objetos. El diseo orientado a
objetos y la programacin orientada a objetos representan un cambio
de perspectiva con respecto a la programacin estndar por
procedimientos. En lugar de pensar en el flujo del programa desde
la primera hasta la ltima lnea de cdigo, se debe pensar en la
creacin de objetos: componentes autocontenidos de una aplicacin que
tienen funcionalidad privada adems de la funcionalidad que se puede
exponer al usuario. En este captulo se tratan los temas siguientes:
l Descripcin de los objetos de Visual FoxPro l Descripcin de las
clases de Visual FoxPro l Adaptar la clase a la tarea l Crear
clases l Agregar clases a formularios l Definir clases mediante
programacin Descripcin de los objetos de Visual FoxPro En Visual
FoxPro, los formularios y los controles son objetos que puede
incluir en sus aplicaciones. Puede manipular estos objetos a travs
de sus propiedades, eventos y mtodos. Las mejoras en el lenguaje
orientado a objetos de Visual FoxPro proporcionan un mayor control
sobre los objetos de las aplicaciones. Asimismo, facilitan la
creacin y el mantenimiento de bibliotecas de cdigo reutilizable,
proporcionando: l Cdigo ms compacto. l Incorporacin ms sencilla del
cdigo a las aplicaciones sin necesidad de elaborar esquemas de
asignacin de nombres. l Menos complejidad al integrar cdigo de
distintos archivos en una aplicacin.file://C:temp~hh52BB.htm
30/05/2000
34. Manual del programador, Parte 1: Programacin en Visual
FoxPro Pgina 33 de 83 La programacin orientada a objetos es en gran
medida un modo de empaquetar cdigo de manera que se pueda volver a
utilizar y mantener ms fcilmente. Los paquetes principales se
llaman clases. Clases y objetos: los bloques funcionales de las
aplicaciones Las clases y los objetos estn estrechamente
relacionados, pero no son lo mismo. Una clase contiene informacin
sobre cul debe ser la apariencia y el comportamiento de un objeto.
Una clase es el plano o esquema de un objeto. Por ejemplo, el
esquema elctrico y de diseo de un telfono sera algo similar a una
clase. El objeto o una instancia de la clase sera el telfono. La
clase determina las caractersticas del objeto. Los objetos tienen
propiedades Un objeto tiene ciertas propiedades o atributos. Por
ejemplo, un telfono tiene un color y un tamao determinados. Cuando
se instala un telfono en la oficina, tiene una determinada posicin
sobre la mesa. El receptor puede estar colgado o descolgado. Los
objetos que se crean en Visual FoxPro tambin tienen propiedades que
estn determinadas por la clase en la que se basa el objeto. Estas
propiedades pueden establecerse en tiempo de diseo o en tiempo de
ejecucin. Por ejemplo, en la tabla siguiente se indican algunas
propiedades que puede tener una casilla de verificacin. Propiedad
Descripcin Caption Texto descriptivo que aparece junto a la casilla
de verificacin. Enabled Especifica si un usuario puede elegir o no
la casilla de verificacin. ForeColor Color del texto del ttulo.
Left Posicin del extremo izquierdo de la casilla de verificacin.
MousePointer Apariencia del puntero del mouse (ratn) cuando est
situado sobre la casilla de verificacin. Top Posicin de la parte
superior de la casilla de verificacin.file://C:temp~hh52BB.htm
30/05/2000
35. Manual del programador, Parte 1: Programacin en Visual
FoxPro Pgina 34 de 83 Visible Especifica si la casilla de
verificacin es visible o no. Los objetos tienen eventos y mtodos
asociados Cada objeto reconoce y puede responder a determinadas
acciones denominadas eventos. Un evento es una actividad especfica
y predeterminada, iniciada por el usuario o por el sistema. Los
eventos, en la mayor parte de los casos, se generan por interaccin
del usuario. Por ejemplo, con un telfono, se desencadena un evento
cuando un usuario descuelga el receptor. Los eventos tambin se
desencadenan cuando el usuario presiona los botones para efectuar
una llamada. En Visual FoxPro, las acciones del usuario que
desencadenan eventos incluyen clics, movimientos del mouse y
pulsaciones de teclas. Inicializar un objeto y encontrar una lnea
de cdigo que produce un error son eventos iniciados por el sistema.
Los mtodos son procedimientos asociados a un objeto. Los mtodos se
diferencian de los procedimientos normales de Visual FoxPro en que
estn vinculados inseparablemente a un objeto y tienen nombres
distintos que los procedimientos normales de Visual FoxPro. Los
eventos pueden tener mtodos asociados. Por ejemplo, si escribe
cdigo de mtodo para el evento Click, ese cdigo se ejecutar cuando
se produzca el evento Click. Los mtodos tambin pueden existir
independientemente de los eventos. Se debe llamar a estos mtodos de
forma explcita en el cdigo. El conjunto de eventos es limitado,
aunque amplio. No es posible crear nuevos eventos. Sin embargo, el
conjunto de mtodos puede ampliarse indefinidamente. La tabla
siguiente muestra algunos de los eventos asociados a una casilla de
verificacin: Evento Descripcin Click El usuario hace clic en la
casilla de verificacin. GotFocus El usuario activa la casilla de
verificacin al hacer clic en ella o al llegar a ella a travs de la
tecla TAB. LostFocus El usuario selecciona otro control. La tabla
siguiente muestra algunos mtodos asociados a una casilla de
verificacin: Mtodo Descripcin Refresh El valor de la casilla de
verificacin se actualiza para reflejar los cambios que se puedan
haber producido en el origen de datos subyacente. SetFocus El
enfoque se establece en la casilla de verificacin como si el
usuario hubiera presionado la tecla TAB hasta activar la casilla de
verificacin. Consulte el captulo 4, Descripcin del modelo de
eventos si desea obtener una explicacin del
ordenfile://C:temp~hh52BB.htm 30/05/2000
36. Manual del programador, Parte 1: Programacin en Visual
FoxPro Pgina 35 de 83 en que se producen los eventos. Descripcin de
las clases de Visual FoxPro Todas las propiedades, eventos y mtodos
de un objeto se especifican en la definicin de clase. Adems, las
clases tienen las siguientes caractersticas que las hacen
especialmente tiles para crear cdigo reutilizable y fcil de
mantener: l Encapsulamiento l Subclases l Herencia Ocultar la
complejidad innecesaria Cuando instale un telfono en la oficina, lo
ms probable es que no le interese el funcionamiento interno del
aparato para la recepcin de llamadas, la realizacin o la
finalizacin de conexiones con centralitas electrnicas o la
conversin de las pulsaciones de tecla en seales electrnicas. Lo
nico que necesitar saber es que puede levantar el auricular, marcar
los nmeros apropiados y hablar con la persona con la que desea
hablar. La complejidad de realizar esa conexin queda oculta. La
ventaja de ignorar los detalles internos de un objeto para poder
centrarse en los aspectos del objeto que necesita utilizar se
denomina abstraccin. La complejidad interna puede estar oculta El
encapsulamiento, que empaqueta el cdigo de mtodos y propiedades en
un mismo objeto, contribuye a la abstraccin. Por ejemplo, las
propiedades que determinan los elementos de un cuadro de lista y el
cdigo que se ejecuta al elegir un elemento de la lista pueden
encapsularse en un nico control que se agrega a un formulario.
Aprovechar la potencia de las clases existentes Una subclase puede
tener toda la funcionalidad de una clase existente, adems de la
funcionalidad y los controles adicionales que quiera darle. Si la
clase es un telfono bsico, podr tener subclases que tengan toda la
funcionalidad del telfono original y todas las caractersticas
especializadas que desee darles. Las subclases le permiten
reutilizar cdigo.file://C:temp~hh52BB.htm 30/05/2000
37. Manual del programador, Parte 1: Programacin en Visual
FoxPro Pgina 36 de 83 La creacin de subclases es un modo de reducir
la cantidad de cdigo que hay que escribir. Puede comenzar
definiendo un objeto que sea similar al deseado y personalizarlo.
Simplificar el mantenimiento de cdigo Con la herencia, si realiza
un cambio en una clase, ese cambio se reflejar en todas las
subclases que se basen en ella. Esta actualizacin automtica ahorra
tiempo y trabajo. Por ejemplo, si un fabricante de telfonos
quisiera cambiar los telfonos de tipo marcacin por aparatos de
pulsacin, se ahorrara mucho trabajo si pudiera hacer el cambio en
el diagrama original y hacer que todos los telfonos fabricados
anteriormente con ese diagrama heredaran automticamente la nueva
caracterstica, en lugar de tener que agregarla a todos los telfonos
existentes individualmente. La herencia facilita el mantenimiento
del cdigo. La herencia no funciona con el hardware, pero s en el
software. Si descubre un error en una clase, en lugar de tener que
cambiar el cdigo de todas las subclases podr corregirlo una nica
vez en la clase y el cambio se propagar a todas las subclases
pertenecientes a ella.file://C:temp~hh52BB.htm 30/05/2000
38. Manual del programador, Parte 1: Programacin en Visual
FoxPro Pgina 37 de 83 Jerarqua de clases de Visual FoxPro A la hora
de crear clases definidas por el usuario, resulta til comprender la
jerarqua de clases de Visual FoxPro. Jerarqua de clases de Visual
FoxPro Contenedores y no contenedores Los dos tipos principales de
clases de Visual FoxPro y por extensin, de objetos de Visual
FoxPro, son las clases de contenedor y las clases de control.
Clases de contenedor y clases de controlfile://C:temp~hh52BB.htm
30/05/2000
39. Manual del programador, Parte 1: Programacin en Visual
FoxPro Pgina 38 de 83 Clases de contenedor Los contenedores pueden
incluir otros objetos y permiten el acceso a los objetos que
contienen. Por ejemplo, si crea una clase de contenedor que consta
de dos cuadros de lista y dos botones de comando y, a continuacin,
agrega a un formulario un objeto basado en esta clase, cada objeto
individual podr manipularse en tiempo de ejecucin y en tiempo de
diseo. Puede cambiar fcilmente las posiciones de los cuadros de
lista o los ttulos de los botones de comando. Tambin puede agregar
objetos al control en tiempo de diseo; por ejemplo, puede agregar
etiquetas para identificar los cuadros de lista. La tabla siguiente
muestra los posibles componentes de cada clase de contenedor:
Contenedor Puede contener Grupos de botones de comando Botones de
comando Contenedor Cualquier control Control Cualquier control
Personalizado Cualquier control, marcos de pgina, contenedor,
personalizado Conjuntos de formularios Formularios, barras de
herramientas Formularios Marcos de pgina, cualquier control,
contenedores, personalizado Columnas de cuadrcula Encabezados de
columnas, cualquier objeto excepto conjuntos de formularios,
formularios, barras de herramientas, cronmetros y otras
columnasfile://C:temp~hh52BB.htm 30/05/2000
40. Manual del programador, Parte 1: Programacin en Visual
FoxPro Pgina 39 de 83 Cuadrculas Columnas de cuadrcula Grupos de
botones de opcin Botones de opcin Marcos de pgina