Beruflich Dokumente
Kultur Dokumente
file://C:\temp\~hh572C.htm 30/05/2000
Manual del programador, Parte 3: Crear la
interfaz
Una interfaz bien diseada puede guiar a los usuarios por su aplicacin. Los formularios, clases,
controles, mens y barras de herramientas ofrecen un conjunto variado de herramientas para disear
una excelente interfaz de usuario.
Captulo 9 Crear formularios
Su aplicacin necesita formularios para permitir a los usuarios ver e introducir datos. Pero tambin
puede personalizar formularios estndar visualmente y mediante programacin para crear un entorno
especializado para sus usuarios.
Captulo 11 Usar controles
Los controles administran las interacciones entre los usuarios y su aplicacin. Visual FoxPro ofrece
diversos controles para mejorar la interfaz de su aplicacin.
Captulo 12 Disear mens y barras de herramientas
Un buen sistema de mens dice mucho a los usuarios acerca del diseo y la estructura de su
aplicacin. Si disea detenidamente los mens puede mejorar la facilidad de uso de su aplicacin,
proporcionar acceso inmediato a tareas comunes y agregar una apariencia de tipo Windows a su
aplicacin.
Captulo 9: Crear formularios
Los formularios no slo sirven para ofrecer a los usuarios una interfaz familiar para ver e introducir
datos en una base de datos, sino que tambin ofrecen un amplio conjunto de objetos que pueden
responder a los eventos del usuario (o del sistema) permitindoles realizar las tareas de
administracin de informacin de la forma ms sencilla e intuitiva posible.
En este captulo se tratan los temas siguientes:
l Disear formularios
l Crear un formulario nuevo
l Agregar objetos a formularios
Manual del programador, Parte 3: Crear la interfaz Pgina 2 de 127
file://C:\temp\~hh572C.htm 30/05/2000
l Manipular objetos
l Administrar formularios
Disear formularios
Visual FoxPro proporciona un eficaz Diseador de formularios para que el diseo de formularios
resulte rpido y sencillo. Puede disponer de:
l Diversos tipos de objetos en los formularios.
l Datos dependientes del formulario.
l Formularios de nivel superior o formularios secundarios.
l Mltiples formularios que pueden manipularse conjuntamente.
l Formularios basados en sus propias plantillas personalizadas.
Los formularios y los conjuntos de formularios son objetos con sus propias propiedades, eventos y
mtodos que pueden establecerse en el Diseador de formularios. Un conjunto de formularios consta
de uno o ms formularios que pueden manipularse como una unidad. Por ejemplo, si tiene cuatro
formularios en su conjunto de formularios, podr mostrarlos u ocultarlos como uno solo mediante un
nico comando en tiempo de ejecucin.
Crear un formulario nuevo
Puede crear formularios nuevos en el Diseador de formularios, y ver a medida que lo disea cmo
ver el usuario cada objeto.
Para crear un formulario nuevo
l En el Administrador de proyectos, seleccione Formularios y elija Nuevo.
-O bien
En el men Archivo, elija Nuevo, seleccione Formulario y, a continuacin, elija Nuevo
archivo.
O bien
l Utilice el comando CREATE FORM.
El Diseador de formularios con barras de herramientas: Diseador de formularios, Controles
de formularios, Diseo y Paleta
Manual del programador, Parte 3: Crear la interfaz Pgina 3 de 127
file://C:\temp\~hh572C.htm 30/05/2000
Para obtener una descripcin ms detallada del Diseador de formularios, consulte el captulo 8,
Administrar datos mediante formularios, del Manual del usuario. Si desea ms informacin sobre las
barras de herramientas, busque el nombre de la barra de herramientas en la Ayuda.
Establecer el entorno de datos
El entorno de datos de un formulario o un conjunto de formularios incluye las tablas o vistas con las
que interacta el formulario y las relaciones entre tablas que espera el formulario. Puede disear
visualmente el entorno de datos en el Diseador de entornos de datos y guardarlo con el formulario o
con el conjunto de formularios.
El entorno de datos puede automatizar la apertura y el cierre de tablas y vistas cuando se ejecuta el
formulario. Adems, el entorno de datos le ayuda a establecer la propiedad ControlSource para
controles al rellenar el cuadro del valor de la propiedad ControlSource de la ventana Propiedades con
todos los campos del entorno de datos.
Para abrir el Diseador de entornos de datos
1. En el men Ver, elija Entorno de datos.
2. En el cuadro Agregar tabla o vista, elija Agregar.
3. En el cuadro de dilogo Abrir, elija la tabla o vista que desea agregar al entorno de datos.
El Diseador de entornos de datos
Manual del programador, Parte 3: Crear la interfaz Pgina 4 de 127
file://C:\temp\~hh572C.htm 30/05/2000
Propiedades habituales del entorno de datos
Las siguientes propiedades del entorno de datos suelen establecerse en la ventana Propiedades:
Propiedad Descripcin Valor predeterminado
AutoCloseTables Controla si las tablas y las vistas se
cierran cuando se libera el formulario o
el conjunto de formularios.
Verdadero (.T.)
AutoOpenTables Controla si las tablas y las vistas del
entorno de datos se abren cuando se
ejecuta el formulario.
Verdadero (.T.)
InitialSelectedAlias La tabla o la vista que se selecciona
cuando se ejecuta el formulario.
"" en tiempo de diseo. Si
no se especifica, en tiempo
de ejecucin se seleccionar
inicialmente el primer cursor
agregado a
DataEnvironment.
Agregar una tabla o vista al Diseador de entornos de datos
Cuando agregue tablas o vistas al Diseador de entornos de datos, puede ver los campos y los ndices
que pertenecen a la tabla o a la vista.
Para agregar una tabla o una vista al entorno de datos
Manual del programador, Parte 3: Crear la interfaz Pgina 5 de 127
file://C:\temp\~hh572C.htm 30/05/2000
1. En el Diseador de entornos de datos, elija Agregar en el men Entorno de datos.
2. En el cuadro de dilogo Agregar tabla o vista, elija una tabla o una vista de la lista.
O bien
Si no hay ninguna base de datos ni ningn proyecto abierto, elija Otros para seleccionar una
tabla.
Tambin puede arrastrar una tabla o una vista desde un proyecto abierto hasta el Diseador de
entornos de datos.
Cuando el Diseador de entornos de datos est activo, la ventana Propiedades muestra objetos y
propiedades asociadas al entorno de datos. Cada tabla o vista del entorno de datos, cada relacin entre
tablas y el mismo entorno de datos son objetos distintos en el cuadro Objeto de la ventana
Propiedades.
Eliminar una tabla del Diseador de entornos de datos
Al quitar una tabla del entorno de datos tambin se quitan las relaciones en las que interviene la tabla.
Para quitar una tabla o una vista del Diseador de entornos de datos
1. En el Diseador de entornos de datos, seleccione la tabla o la vista.
2. En el men Entorno de datos, elija Quitar.
Establecer relaciones en el Diseador de entornos de datos
Si agrega al Diseador de entornos de datos tablas que tienen relaciones persistentes establecidas en
una base de datos, las relaciones se agregarn automticamente al entorno de datos. Si las tablas no
tienen relaciones persistentes, podr relacionarlas en el Diseador de entornos de datos.
Para establecer relaciones en el Diseador de entornos de datos
l Arrastre un campo desde la tabla principal hasta la etiqueta de ndice correspondiente de la
tabla relacionada.
El Diseador de entornos de datos con relaciones establecidas entre tablas
Manual del programador, Parte 3: Crear la interfaz Pgina 6 de 127
file://C:\temp\~hh572C.htm 30/05/2000
Tambin puede arrastrar un campo desde la tabla principal hasta un campo de la tabla relacionada. Si
no hay ninguna etiqueta de ndice en la tabla relacionada correspondiente al campo de la tabla
principal, se le pedir que cree la etiqueta de ndice.
Modificar relaciones en el Diseador de entornos de datos
Cuando establezca una relacin en el Diseador de entornos de datos, una lnea entre las tablas
indicar la relacin.
Para modificar las propiedades de la relacin
l En la ventana Propiedades, seleccione la relacin en el cuadro Objeto.
Las propiedades de la relacin corresponden a clusulas y palabras clave de los comandos SET
RELATION y SET SKIP.
La propiedad RelationalExpr se establece de forma predeterminada con el nombre del campo clave
principal de la tabla primaria. Si la tabla relacionada est indexada en una expresin, deber
establecer la propiedad RelationalExpr con esta expresin. Por ejemplo, si la tabla relacionada est
indexada en UPPER(cust_id), deber establecer RelationalExpr como UPPER(cust_id).
Si la relacin no es de uno a varios, establezca la propiedad OneToMany como falsa (.F.). Esto
equivale a utilizar el comando SET RELATION sin ejecutar SET SKIP.
Establecer la propiedad OneToMany de una relacin como verdadera (.T.) equivale a ejecutar el
Manual del programador, Parte 3: Crear la interfaz Pgina 7 de 127
file://C:\temp\~hh572C.htm 30/05/2000
comando SET SKIP. Si omite la tabla primaria, el puntero de registro permanecer en el mismo
registro primario hasta pasar a travs de todos los registros relacionados de la tabla secundaria.
Nota Si desea crear una relacin de uno a varios en el formulario o el conjunto de formularios,
establezca como verdadera (.T.) la propiedad OneToMany, aunque se haya establecido una relacin
persistente de uno a varios en la base de datos.
Crear interfaces de un nico documento e interfaces de documentos mltiples
Visual FoxPro le permite crear dos tipos de aplicaciones:
l Las aplicaciones con interfaz de documentos mltiples(Multiple-document interface, MDI)
estn formadas por una ventana principal nica y las ventanas de la aplicacin estn contenidas
en la ventana principal. Visual FoxPro es fundamentalmente una aplicacin MDI, con la
ventana Comandos, las ventanas de edicin y las ventanas de diseadores contenidas en la
ventana principal de Visual FoxPro.
l Las aplicaciones con interfaz de un nico documento (SDI) estn formadas por una o ms
ventanas independientes, cada una de las cuales aparece como ventana independiente en el
escritorio de Windows. Microsoft Exchange es un ejemplo de una aplicacin SDI, en la que
cada mensaje que abra aparece en su propia ventana independiente.
Una aplicacin formada por ventanas sencillas es generalmente una aplicacin SDI, pero algunas
aplicaciones mezclan elementos SDI y MDI. Por ejemplo, Visual FoxPro muestra su depurador como
aplicacin SDI, que a su vez contiene ventanas MDI.
Para admitir ambos tipos de interfaz, Visual FoxPro le permite crear varios tipos de formularios:
l Formulario secundario. Un formulario contenido en otra ventana, utilizada en la creacin de
aplicaciones MDI. Los formularios secundarios no se pueden mover fuera de los lmites de su
formulario primario y cuando se minimizan aparecen en la parte inferior del formulario
primario. Si el formulario primario est minimizado, tambin se minimizan los formularios
secundarios.
l Formulario flotante. Formulario que pertenece a un formulario primario, pero no est
contenido en l. Los formularios flotantes se pueden mover por toda la pantalla. No se pueden
mover por detrs de su ventana primaria. Si estn minimizados, aparece un formulario flotante
en la parte inferior del escritorio. Si su formulario primario est minimizado, los formularios
flotantes tambin se minimizan. Los formularios flotantes tambin se usan en la creacin de
aplicaciones MDI.
l Formulario de nivel superior. Un formulario independiente sin formulario primario, utilizado
para crear una aplicacin SDI o como formulario primario de otros formularios secundarios de
una aplicacin MDI. Los formularios de nivel superior funcionan al mismo nivel que otras
aplicaciones de Windows y pueden aparecer por delante o por detrs de ellas. Aparecen en la
barra de estado de Windows.
Formularios secundarios, flotantes y de nivel superior
Manual del programador, Parte 3: Crear la interfaz Pgina 8 de 127
file://C:\temp\~hh572C.htm 30/05/2000
Especificar un tipo de formulario
Todos los tipos de formularios se crean de forma similar, pero se establecen propiedades especficas
para indicar cul debe ser el comportamiento de los formularios.
Si va a crear un formulario secundario, debe especificar no slo qu debe aparecer dentro de otro
formulario, sino tambin si es un formulario secundario compatible con MDI, que indica el
comportamiento del formulario cuando se maximiza. Si el formulario secundario es compatible MDI,
se combina con el formulario primario, compartiendo la barra de ttulo, el ttulo, los mens y las
barras de herramientas del formulario primario. Un formulario secundario no compatible con MDI se
maximiza en toda la zona cliente del formulario primario, pero conserva su ttulo y su barra de ttulo.
Para especificar un formulario secundario
1. Cree o modifique el formulario mediante el Diseador de formularios.
2. Establezca la propiedad ShowWindow del formulario a uno de los valores siguientes:
l 0 En pantalla. El formulario primario del formulario secundario ser la ventana
principal de Visual FoxPro.
l 1 En formulario de nivel superior. El formulario primario del formulario secundario
ser el formulario de nivel superior que est activo cuando se muestre la ventana
secundaria. Use este valor si quiere que la ventana secundaria aparezca dentro de
cualquier ventana de nivel superior distinta de la ventana principal de Visual FoxPro.
3. Establezca la propiedad MDIForm del formulario a .T. (verdadero) si quiere que el formulario
Manual del programador, Parte 3: Crear la interfaz Pgina 9 de 127
file://C:\temp\~hh572C.htm 30/05/2000
secundarios se combine con el formulario primario cuando se maximice, o a .F. (falso) si la
ventana secundaria debe seguir siendo una ventana independiente cuando se maximice.
Un formulario flotante es una variacin de un formulario secundario.
Para especificar un formulario flotante
1. Cree o modifique el formulario con el Diseador de formularios.
2. Establezca la propiedad ShowWindow del formulario a uno de los valores siguientes:
l 0 En pantalla. El formulario primario del formulario flotante ser la ventana principal
de Visual FoxPro.
l 1 En formulario de nivel secundario. El formulario primario del formulario flotante
ser el formulario de nivel superior que est activo cuando se muestre la ventana flotante.
3. Establezca la propiedad Desktop del formulario a .T. (verdadero).
Para especificar un formulario de nivel superior
1. Cree o modifique el formulario con el Diseador de formularios.
2. Establezca la propiedad ShowWindow del formulario a 2 Como formulario de nivel
superior.
Mostrar un formulario secundario dentro de un formulario de nivel superior
Si ha creado un formulario secundario en el que la propiedad ShowWindow est establecido como 1
En formulario de nivel superior, no especifique directamente el formulario de nivel superior que
acta como formulario primario del formulario secundario. En lugar de esto, Visual FoxPro asigna el
formulario secundario a un formulario primario cuando se muestre la ventana secundaria.
Para mostrar un formulario secundario dentro de un formulario de nivel superior
1. Cree un formulario de nivel superior.
2. En el cdigo de evento del formulario de nivel superior, incluya el comando DO FORM y
especifique el nombre del formulario secundario que va a mostrar.
Por ejemplo, cree un botn en el formulario de nivel superior y, a continuacin, incluya en el
cdigo del evento Click para el botn un comando como este:
DO FORM MiSecundario
Nota El formulario de nivel superior debe estar visible y activo cuando se muestre el
formulario secundario. Por lo tanto, no puede usar el evento Init del formulario de nivel
superior para mostrar un formulario secundario, porque el formulario de nivel superior an no
estar activo.
3. Active el formulario de nivel superior y, si es necesario, desencadene el evento que muestra el
Manual del programador, Parte 3: Crear la interfaz Pgina 10 de 127
file://C:\temp\~hh572C.htm 30/05/2000
formulario secundario.
Ocultar la ventana principal de Visual FoxPro
Si est ejecutando un formulario de nivel superior, es posible que quiera que la ventana principal de
Visual FoxPro est visible. Puede usar la propiedad Visible del objeto Application para ocultar y
mostrar la ventana principal de Visual FoxPro cuando sea necesario.
Para ocultar la ventana principal de Visual FoxPro
1. En el evento Init del formulario, incluya la siguiente lnea de cdigo:
Application.Visible = .F.
2. En el evento Destroy del formulario, incluya la siguiente lnea de cdigo:
Application.Visible = .T.
Asegrese de que tambin proporciona una forma de cerrar el formulario con THISFORM.Release en
algn mtodo o evento.
Nota Tambin puede incluir la lnea siguiente en un archivo de configuracin para ocultar la
ventana principal de Visual FoxPro:
SCREEN = OFF
Para obtener ms informacin sobre la configuracin de Visual FoxPro, consulte el captulo 3,
Configurar Visual FoxPro, de la Gua de instalacin e ndice principal.
Agregar un men a un formulario de nivel superior
Para agregar un men a un formulario de nivel principal
1. Cree un men de formulario de nivel superior. Para obtener ms informacin acerca de la
creacin de mens para formularios de nivel superior, consulte el captulo 11, Disear mens y
barras de herramientas.
2. Establezca la propiedad ShowWindow del formulario a 2 Como formulario de nivel
superior.
3. En el evento Init del formulario, ejecute el programa de men y psele dos parmetros:
DO menuname.mpr WITH oForm, lAutoRename
oForm es una referencia de objeto al formulario. En el evento Init del formulario, psele THIS
como primer parmetro.
lAutoRename especifica si se genera o no un nombre nico para el men. Si pretende ejecutar
varias instancias del formulario, pase .T. como lAutoRename.
Manual del programador, Parte 3: Crear la interfaz Pgina 11 de 127
file://C:\temp\~hh572C.htm 30/05/2000
Por ejemplo, puede llamar a un men llamado mySDImenu con este cdigo:
DO mySDImenu.mpr WITH THIS, .T.
Ampliar formularios con conjuntos de formularios
Puede manipular mltiples formularios como si fueran un grupo incluyndolos en un conjunto de
formularios. Un conjunto de formularios tiene estas ventajas:
l Permite mostrar u ocultar todos los formularios de un conjunto al mismo tiempo.
l Permite organizar visualmente mltiples formularios al mismo tiempo para controlar sus
posiciones relativas.
l Como todos los formularios de un conjunto de formularios se definen en un nico archivo
.SCX con un nico entorno de datos, puede sincronizar automticamente punteros de registros
en mltiples formularios. Si cambia el puntero de registro de una tabla primaria de un
formulario, los registros secundarios de otro formulario se actualizan y se muestran.
Nota Todos los formularios de un conjunto de formularios se cargan cuando se ejecuta el conjunto.
Si necesita cargar muchos formularios con muchos controles, puede tardar varios segundos.
Crear un nuevo conjunto de formularios
Un conjunto de formularios es un contenedor primario para uno o varios formularios. Cuando tenga
activo el Diseador de formularios, podr crear un conjunto de formularios.
Para crear un conjunto de formularios
l En el men Formulario, elija Crear conjunto de formularios.
Si no desea trabajar con mltiples formularios como si fueran un grupo de formularios, no ser
necesario que cree un conjunto. Despus de crear un conjunto de formularios, podr agregarle
formularios.
Agregar y eliminar formularios
Cuando haya creado un conjunto de formularios, podr agregarle formularios nuevos y eliminar
formularios existentes.
Para agregar formularios adicionales a un conjunto de formularios
l En el men Formulario, elija Agregar nuevo formulario.
Para eliminar un formulario de un conjunto de formularios
1. En el cuadro Formulario situado en la parte inferior del Diseador de formularios, seleccione
el formulario.
2. En el men Formulario, elija Quitar formulario.
Manual del programador, Parte 3: Crear la interfaz Pgina 12 de 127
file://C:\temp\~hh572C.htm 30/05/2000
Si en un conjunto de formularios slo tiene un formulario, podr eliminar el conjunto de formularios
para quedarse slo con el formulario.
Para eliminar un conjunto de formularios
l En el men Formulario, elija Quitar conjunto de formularios.
Los formularios se guardan con formato de tabla en un archivo que tiene la extensin .scx. Cuando
cree un formulario, la tabla .scx contendr un registro para el formulario, un registro para el entorno
de datos y dos registros de uso interno. Se agregar un registro para cada objeto que agregue al
formulario o al entorno de datos. Si crea un conjunto de formularios, se agregar un registro adicional
para el conjunto de formularios y para cada formulario nuevo. El contenedor principal de cada
formulario es el conjunto de formularios, mientras que el contenedor primario de cada control es el
formulario en el que est situado.
Sugerencia Cuando ejecute un conjunto de formularios, no desear que todos los formularios del
conjunto sean visibles inicialmente. Establezca la propiedad Visible como falsa (.F.) para los
formularios que no desee mostrar cuando se ejecute el conjunto de formularios. Establezca la
propiedad Visible como verdadera (.T.) si desea mostrar los formularios.
Agregar objetos a formularios
Para disear la funcionalidad que desea en un formulario, agregue los controles apropiados,
establezca las propiedades del formulario y de los controles, y escriba el cdigo de evento.
Puede agregar los siguientes tipos de objetos a un formulario:
l Controles
l Contenedores
l Clases definidas por el usuario
l Objetos OLE
Descripcin de los objetos contenedores y de control
Los objetos de Visual FoxPro pueden corresponder a dos categoras, segn la naturaleza de la clase
en la que se basen:
l Los contenedores pueden ser el objeto primario para otros objetos. Por ejemplo, un formulario,
como contenedor, es un objeto primario para una casilla de verificacin de ese formulario.
l Los controles puede estar contenidos en contenedores, pero no pueden ser objetos primarios de
otros objetos. Por ejemplo, una casilla de verificacin no puede contener ningn otro objeto.
El Diseador de formularios permite disear contenedores y controles.
Manual del programador, Parte 3: Crear la interfaz Pgina 13 de 127
file://C:\temp\~hh572C.htm 30/05/2000
Contenedor Puede contener
Columna Encabezados y cualquier objeto excepto conjunto de
formularios, formularios, barras de herramientas,
cronmetros y otras columnas
Grupo de botones de comando Botones de comando
Conjunto de formularios Formularios, barras de herramientas
Formulario Marcos de pgina, cuadrculas, cualquier control
Cuadrcula Columnas
Grupo de botones de opcin Botones de opcin
Marco de pgina Pginas
Pgina Cuadrculas, cualquier control
Agregar contenedores de Visual FoxPro
Adems de conjuntos de formularios y formularios, Visual FoxPro proporciona cuatro clases de
contenedores de base.
Clases de contenedores de Visual FoxPro
Grupo de botones de comando Grupo de botones de comando
Cuadrcula Marco de pginas
Para agregar objetos contenedores a un formulario
l En la barra de herramientas Controles de formularios, seleccione el botn del objeto
contenedor deseado (cuadrcula, marco de pginas o grupo de botones) y arrstrelo para ajustar
su tamao en el formulario.
Al agregar un grupo de botones de comando o un grupo de botones de opcin a un formulario, el
grupo contiene dos botones de forma predeterminada. Cuando agregue un marco de pginas a un
formulario, el marco de pginas contendr dos pginas de forma predeterminada. Puede agregar ms
botones o pginas si establece las propiedades ButtonCount o PageCount con el nmero que desee.
Cuando agregue una cuadrcula a un formulario, la propiedad ColumnCount se establecer de forma
predeterminada como 1, que indica AutoFill (relleno automtico). En tiempo de ejecucin, la
cuadrcula mostrar tantas columnas como campos haya en la tabla RowSource. Si no desea AutoFill,
puede especificar el nmero de columnas si establece la propiedad ColumnCount de la cuadrcula.
Para obtener ms informacin sobre estos objetos contenedores, consulte el captulo 10, Usar
controles.
Manual del programador, Parte 3: Crear la interfaz Pgina 14 de 127
file://C:\temp\~hh572C.htm 30/05/2000
Propiedades Collection y Count
Todos los objetos contenedores de Visual FoxPro tienen asociadas una propiedad contador y una
propiedad coleccin. La propiedad coleccin es una matriz que hace referencia a cada objeto
contenido. La propiedad contador es una propiedad numrica que indica el nmero de objetos
contenidos.
Se da nombre a las propiedades coleccin y contador para cada contenedor de acuerdo con el tipo de
objeto que se puede contener en el contenedor. La tabla siguiente muestra los contenedores y las
correspondientes propiedades coleccin y contador.
Contenedor Propiedad coleccin Propiedad contador
Application Objects
Forms
Count
FormCount
FormSet Forms FormCount
Form Objects
Controls
Count
ControlCount
PageFrame Pages PageCount
Page Controls ControlCount
Grid Columns ColumnCount
CommandGroup Buttons ButtonCount
OptionGroup Buttons ButtonCount
Column Controls ControlCount
ToolBar Controls ControlCount
Container Controls ControlCount
Control Controls ControlCount
Estas propiedades le permiten usar un bucle para manipular mediante programacin todos los objetos
contenidos o algunos objetos especficos. Por ejemplo, las lneas de cdigo siguientes establecen la
propiedad BackColor de columnas de una cuadrcula a verde y rojo de forma alterna:
o = THISFORM.grd1
FOR i = 1 to o.ColumnCount
IF i % 2 = 0 && Columna par
o.Columns(i).BackColor = RGB(0,255,0) && Verde
ELSE
o.Columns(i).BackColor = RGB(255,0,0) && Rojo
ENDIF
ENDFOR
Agregar controles de Visual FoxPro a un formulario
Manual del programador, Parte 3: Crear la interfaz Pgina 15 de 127
file://C:\temp\~hh572C.htm 30/05/2000
La barra de herramientas Controles de formularios permite agregar fcilmente al formulario cualquier
control estndar de Visual FoxPro.
Controles estndar de Visual FoxPro
Check box
Hyperlink
List box
Spinner
Combo box
Image
OLE Bound Control
Text box
Command button
Label
OLE Container Control
Timer
Edit box
Line
Shape
Para agregar controles a un formulario
l En la barra de herramientas Controles de formularios, seleccione el botn del control deseado y
haga clic o arrstrelo para ajustar su tamao en el formulario.
Para obtener ms informacin sobre los controles que puede elegir, consulte el captulo 10, Usar
controles.
Agregar controles vinculados a datos a un formulario
Puede vincular controles a datos de una tabla, una vista, un campo de tabla o un campo de vista si
establece la propiedad ControlSource de un control a un campo de la propiedad RecordSource de una
cuadrcula, a una tabla o una vista. Pero tambin puede crear controles vinculados a datos si arrastra
campos o tablas al formulario directamente desde:
l El Administrador de proyectos
l El Diseador de bases de datos
l El Diseador de entorno de datos
La clase de control creado de esta forma depende de la configuracin de Asignaciones de campos de
la ficha Propiedades del Diseador de tablas o de la ficha Asignacin de campos del cuadro de
dilogo Opciones.
Para obtener ms informacin sobre cmo establecer clases de controles predeterminadas, vea el
Diseador de tablas o la ficha Asignacin de campos del cuadro de dilogo Opciones.
Agregar objetos definidos por el usuario a un formulario
Manual del programador, Parte 3: Crear la interfaz Pgina 16 de 127
file://C:\temp\~hh572C.htm 30/05/2000
Una de las caractersticas ms potentes de Visual FoxPro es su capacidad para crear clases que se
pueden utilizar y reutilizar fcilmente en distintas partes de las aplicaciones. Cuando haya creado las
clases, podr agregarlas a los formularios o conjuntos de formularios.
Para agregar un objeto basado en una clase personalizada
l En el Administrador de proyectos, arrastre la clase hasta el formulario o la pgina.
Las clases se pueden agregar directamente desde la barra de herramientas Controles de formularios
cuando las registra.
Agregar bibliotecas de clases a la barra de herramientas Controles
Debe registrar las bibliotecas de clases antes de poder mostrarlas en la barra de herramientas
Controles de formularios.
Para registrar una biblioteca de clases
1. En el men Herramientas, elija Opciones.
2. En el cuadro de dilogo Opciones, elija la ficha Controles.
3. Elija Agregar.
4. En el cuadro de dilogo Abrir, elija una biblioteca de clases que desee agregar a la lista
Seleccionado y elija Abrir.
5. Repita los pasos 3 y 4 hasta agregar todas las bibliotecas que desee registrar.
Las clases de las bibliotecas que se hayan incluido en la lista Seleccionado pueden emplearse en el
Diseador de formularios con la misma facilidad que las clases de base de Visual FoxPro.
Ficha Controles del cuadro de dilogo Opciones
Manual del programador, Parte 3: Crear la interfaz Pgina 17 de 127
file://C:\temp\~hh572C.htm 30/05/2000
Sugerencia Si quiere que las bibliotecas de clases estn disponibles en la barra de herramientas
Controles de formularios cada vez que ejecute Visual FoxPro, elija Establecer como predeterminado
en el cuadro de dilogo Opciones.
Tambin puede registrar bibliotecas directamente en el Diseador de formularios.
Para registrar una biblioteca de clases en el Diseador de formularios
1. En la barra de herramientas Controles de formularios, elija el botn Ver clases.
2. En el submen, elija Agregar.
Submen del botn Ver clases
Manual del programador, Parte 3: Crear la interfaz Pgina 18 de 127
file://C:\temp\~hh572C.htm 30/05/2000
3. En el cuadro de dilogo Abrir, elija una biblioteca de clases que desee agregar a la barra de
herramientas Controles de formularios y elija Abrir.
Agregar objetos a un formulario desde una biblioteca de clases
Cuando haya agregado bibliotecas de clases en la ficha Clases del cuadro de dilogo Opciones o
desde el submen Ver clases, tendr acceso a las mismas en el Diseador de formularios.
Para agregar un objeto personalizado desde la barra de herramientas Controles de formularios
1. En la barra de herramientas Controles de formularios, elija el botn Ver clases.
2. En la lista de bibliotecas de clases registradas, seleccione la biblioteca que contiene el control
que desea agregar al formulario.
La barra de herramientas est formada por los controles de la biblioteca que ha seleccionado.
La biblioteca de clases definida por el usuario se agrega al submen Ver clases
3. Haga clic en el control que desee y arrastre para ajustar su tamao en el formulario.
Nota Puede eliminar una biblioteca de clases visuales desde el men de la barra de herramientas Ver
clases si selecciona la biblioteca en la lista Seleccionado de la ficha Controles de formularios del
cuadro de dilogo Opciones y elige Quitar.
Cuando agregue a un formularios objetos que no estn basados en las clases de base de Visual
FoxPro, se almacenar una ruta relativa a la biblioteca de clases (archivo .vcx) en el archivo .scx del
formulario. Si mueve el formulario o la biblioteca de clases a una ubicacin diferente, Visual FoxPro
muestra un cuadro de dilogo cuando intenta ejecutar el formulario de forma que puede localizar
manualmente la biblioteca de clases.
Determinar los controles que hay en un formulario
Para determinar cuntos controles hay en un formulario, puede utilizar la propiedad ControlCount. La
propiedad Controls[n] del formulario permite hacer referencia a cada control del formulario. El
programa siguiente imprime la propiedad Name de todos los controles que hay actualmente en el
formulario activo.
Manual del programador, Parte 3: Crear la interfaz Pgina 19 de 127
file://C:\temp\~hh572C.htm 30/05/2000
ACTIVATE SCREEN && imprimir en la ventana principal de Visual FoxPro
FOR nCnt = 1 TO Application.ActiveForm.ControlCount
? Application.ActiveForm.Controls[nCnt].Name
ENDFOR
Agregar propiedades y mtodos a un formulario
Puede agregar a un formulario tantas propiedades y mtodos nuevos como desee. Las propiedades
contienen un valor, mientras que los mtodos contienen cdigo de procedimientos que se ejecuta al
llamar al mtodo. Las propiedades y los mtodos nuevos tienen como alcance el formulario y se hace
referencia a los mismos del mismo modo que a otras propiedades o mtodos.
Crear propiedades nuevas
Si dispone de un conjunto de formularios, las propiedades y los mtodos que agregue en el Diseador
de formularios tendrn como alcance el conjunto de formularios. Si no dispone de ningn conjunto de
formularios, las propiedades y los mtodos tendrn como alcance el formulario.
Para agregar una propiedad nueva a un formulario
1. En el men Formulario, elija Nueva propiedad.
2. En el cuadro de dilogo Nueva propiedad, escriba el nombre de la propiedad. Tambin puede
incluir una descripcin de la propiedad que se mostrar en la parte inferior de la ventana
Propiedades.
Agregar una propiedad a un formulario
Manual del programador, Parte 3: Crear la interfaz Pgina 20 de 127
file://C:\temp\~hh572C.htm 30/05/2000
Crear una propiedad de matriz
Una propiedad de matriz se incluye en el alcance del formulario o del conjunto de formularios como
cualquier otra propiedad, pero puede manipularse mediante los comandos y las funciones de matriz
de Visual FoxPro.
Para crear una propiedad de matriz
1. Agregue una nueva propiedad al formulario.
2. En el cuadro Nombre del cuadro de dilogo Nueva propiedad, escriba el nombre de la
propiedad de matriz e incluya el tamao y las dimensiones de la matriz.
Por ejemplo, podra escribir arrayprop[10,2] en el cuadro Nombre del cuadro de dilogo
Nueva propiedad para crear una matriz bidimensional con 10 filas.
Las propiedades de matriz son de slo lectura en modo de diseo, pero puede administrar,
redimensionar y asignar valores a los elementos de la propiedad matriz en tiempo de ejecucin. Para
ver un ejemplo del uso de una propiedad de matriz, consulte Administrar mltiples instancias de un
formulario.
Crear nuevos mtodos
Puede agregar al formulario mtodos a los que se puede llamar del mismo modo que a los mtodos de
Manual del programador, Parte 3: Crear la interfaz Pgina 21 de 127
file://C:\temp\~hh572C.htm 30/05/2000
clase de formulario.
Para crear un nuevo mtodo para un formulario
1. En el men Formulario, elija Nuevo mtodo.
2. En el cuadro de dilogo Nuevo mtodo, escriba el nombre del mtodo. Opcionalmente, puede
incluir una descripcin del mtodo.
Para llamar a los mtodos definidos por el usuario, como sucede con los mtodos de clase de base,
utilice la sintaxis siguiente:
NombreObjeto.NombreMtodo
El mtodo tambin puede aceptar parmetros y devolver valores. En este caso, se llama al mtodo en
una instruccin de asignacin:
cVariable = NombreObjeto.NombreMtodo(cParmetro, nParmetro)
Incluir constantes predefinidas
Para utilizar constantes predefinidas en sus mtodos, puede incluir un archivo de encabezado en un
formulario o un conjunto de formularios con #INCLUDE. Un archivo de encabezado suele contener
constantes de tiempo de compilacin definidas con la directiva del preprocesador #DEFINE.
Para incluir un archivo en un formulario
1. En el men Formulario, elija Incluir archivo.
2. En el cuadro de dilogo Incluir archivo, especifique el archivo deseado en el cuadro de texto
Incluir archivo.
O bien
Elija el botn de tres puntos para abrir el cuadro de dilogo Incluir y elija el archivo.
3. Elija Incluir.
Manipular objetos
Hay varias formas de manipular los objetos en tiempo de diseo:
l Establezca el tamao y la posicin de los objetos arrastrndolos en la ventana Diseador de
formularios.
l Alinee los controles eligiendo las herramientas de alineacin de la barra de herramientas
Diseo o los comandos del men Formato.
l Establezca los colores de primer plano y de fondo en la barra de herramientas Paleta.
l Establezca las propiedades en la ventana Propiedades. El punto principal de control para todos
Manual del programador, Parte 3: Crear la interfaz Pgina 22 de 127
file://C:\temp\~hh572C.htm 30/05/2000
los objetos del formulario o del conjunto de formularios es la ventana Propiedades.
Establecer propiedades en tiempo de diseo
Cuando se abre la ventana Propiedades, muestra las propiedades o los eventos del objeto
seleccionado. Si hay ms de un objeto seleccionado, las propiedades que los objetos tienen en comn
se muestran en la ventana Propiedades. Para modificar las propiedades o los eventos de otro objeto,
elija el objeto correspondiente en el cuadro Objeto o bien seleccione otro control en el formulario.
La ventana Propiedades
Para establecer una propiedad
1. En la ventana Propiedades, seleccione una propiedad en la lista Propiedades y eventos.
2. En el cuadro Valores de propiedades, escriba o elija el valor que desee para la propiedad
seleccionada.
Nota Las propiedades de slo lectura en tiempo de diseo, como la propiedad Class de un objeto, se
muestran en cursiva en la lista Propiedades y eventos de la ventana Propiedades.
Si la propiedad necesita un valor de carcter, no ser necesario que incluya el valor entre comillas. Si
desea que el ttulo de un formulario sea CLIENTE, escriba CLIENTE en el cuadro Valores de
propiedades. Si desea que el ttulo de un formulario sea "CLIENTE", mostrando las comillas en el
ttulo de la ventana, escriba "CLIENTE" en el cuadro Valores de propiedades.
Manual del programador, Parte 3: Crear la interfaz Pgina 23 de 127
file://C:\temp\~hh572C.htm 30/05/2000
Establecer propiedades con expresiones
Tambin puede establecer propiedades con los resultados de expresiones o funciones a travs de la
ventana Propiedades.
Para establecer una propiedad con una expresin
l En la ventana Propiedades, elija el botn Funcin para abrir el Generador de expresiones.
O bien
l En el cuadro Valores de propiedades, escriba = seguido de una expresin.
Por ejemplo, puede establecer la propiedad Caption de un formulario para indicar la tabla
activa actualmente cuando se ejecuta el formulario; para ello, escriba =ALIAS( ) en el cuadro
Valores de propiedades.
La expresin de una propiedad se evala cuando se establece en la ventana Propiedades y cuando el
objeto se inicializa en tiempo de ejecucin o de diseo. Una vez creado el objeto, el valor de la
propiedad no cambiar hasta que usted o un usuario la modifique explcitamente.
Solucin de problemas Si establece una propiedad con el resultado de una funcin definida por el
usuario, la funcin se evaluar cuando establezca la propiedad o cuando modifique o ejecute el
formulario. Si hay un error en la funcin definida por el usuario, es posible que no pueda abrir el
formulario.
Tambin puede establecer la propiedad para la funcin definida por el usuario en el evento Init del
objeto, como en el ejemplo siguiente:
THIS.Caption = mifuncin( )
Si hay un error en la funcin definida por el usuario, no podr ejecutar el formulario de este modo,
pero s podr modificarlo.
Definir el comportamiento de un formulario
Cuando disea un formulario en el Diseador de formularios, ver los cambios en directo: excepto
para establecer la propiedad Visible a falso (.F.), los cambios visuales y de comportamiento que
efecte se reflejarn inmediatamente en el formulario. Si establece la propiedad WindowState como 1
(Minimizada) o 2 (Maximizada), el formulario del Diseador de formularios reflejar
inmediatamente este cambio. Si establece la propiedad Movable como falso (.F.), el usuario no podr
mover el formulario en tiempo de ejecucin y usted tampoco podr moverlo en tiempo de diseo. Es
conveniente disear la funcionalidad del formulario y agregar todos los controles apropiados antes de
establecer algunas propiedades que determinan su comportamiento.
Las siguientes propiedades de formulario suelen establecerse en tiempo de diseo para definir la
apariencia y el comportamiento del formulario:
Manual del programador, Parte 3: Crear la interfaz Pgina 24 de 127
file://C:\temp\~hh572C.htm 30/05/2000
Propiedad Descripcin Opcin
predeterminada
AlwaysOnTop Controla si un formulario siempre est situado sobre las
dems ventanas abiertas.
Falso (.F.)
AutoCenter Controla si el formulario se centra automticamente en
la ventana principal de Visual FoxPro cuando se
inicializa el formulario.
Falso (.F.)
BackColor Determina el color de la ventana del formulario. 255,255,255
BorderStyle Controla si el formulario no tiene borde, tiene un borde
de una sola lnea, de doble ancho o del sistema. Si
BorderStyle es 3 (Sistema), el usuario podr cambiar el
tamao del formulario.
3
Caption Determina el texto que aparece en la barra de ttulo del
formulario.
Form1
Closable Controla si el usuario puede cerrar el formulario
haciendo doble clic en el cuadro de cierre.
Verdadero (.T.)
DataSession Controla si las tablas del formulario o el conjunto de
formularios estn abiertas en reas de trabajo accesibles
globalmente o privadas para el formulario o el conjunto
de formularios.
1
MaxButton Controla si el formulario tiene o no un botn de
maximizar.
Verdadero (.T.)
MinButton Controla si el formulario tiene o no un botn de
minimizar.
Verdadero (.T.)
Movable Controla si el formulario puede moverse o no a una
nueva ubicacin de la pantalla.
Verdadero (.T.)
ScaleMode Controla si la unidad de medida para las propiedades
de tamao y posicin de los objetos es fxeles o
pxeles.
Determinado por los
valores del cuadro
de dilogo
Opciones.
Scrollbars Controla el tipo de barras de desplazamiento que tiene
un formulario.
0 Ninguna
TitleBar Controla si aparece una barra de ttulo en la parte
superior del formulario.
1 Activo
ShowWindow Controla si la ventana es una ventana secundaria (en la
pantalla), flotante o de nivel superior.
0 - En pantalla
WindowState Controla si el formulario est minimizado, maximizado
o es normal.
0 Normal
Manual del programador, Parte 3: Crear la interfaz Pgina 25 de 127
file://C:\temp\~hh572C.htm 30/05/2000
WindowType Controla si el formulario es de tipo sin modo (opcin
predeterminada) o modal. Si es modal, el usuario
deber cerrar el formulario antes de tener acceso a
ningn otro elemento de la interfaz de usuario de la
aplicacin.
0 Sin modo
Utilice la propiedad LockScreen para que el ajuste en tiempo de ejecucin de las propiedades de
diseo de controles parezca ms limpio.
Asignar iconos a formularios
En Visual FoxPro para Windows, puede asignar un icono al formulario; el icono se muestra cuando la
ventana est minimizada en Windows NT