¿Que es Visual Fox Pro? Visual Fox Pro es un programa , como su nombre lo indica, de forma visual para que el entorno del programador sea mas agradable y con menos posibilidades de codificación errónea. Este programa ha sido diseñado para los programadores mas exigentes, ya que le permite trabajar con objetos, ya que este lenguaje se orienta a objetos. Introducción a las aplicaciones Las aplicaciones de ejemplo de Visual FoxPro han sido programadas con la intención de ayudarle en sus primeros pasos con Visual FoxPro. Mientras examina cada ejemplo, puede ver cómo funciona el ejemplo, examinar su código y cómo puede utilizar sus características en sus propias aplicaciones. Para abrir un proyecto de aplicación de ejemplo en el Administrador de proyectos, haga clic en Abrir. Para ejecutar una aplicación de ejemplo, haga clic en Ejecutar. El ejemplo Soluciones incluye más de 90 ejemplos de tareas específicas de Visual FoxPro, desde formularios de entradas de datos individuales hasta cuadros de diálogo de fichas ajustadas dinámicamente, pasando por llamadas a la API de Windows. La interfaz (SOLUTION.SCX) para la aplicación de ejemplo Soluciones ofrece varias características: · Dos formas de ver el contenido del ejemplo Soluciones: · Una vista de árbol (esquema) en la que se muestra la jerarquía de los componentes de la aplicación. · Una vista de lista filtrada de los componentes de la aplicación que proporciona un listado, por orden alfabético, de todos los componentes que van a filtrar la lista según lo que usted haya especificado con respecto al orden. · Un botón expandir/contraer para ver todos los componentes de la vista de árbol. · Una breve descripción de un ejemplo seleccionado. · La opción de ejecutar el código y/o ver el código abriéndolo en el diseñador adecuado. · Una descripción de cómo se han implementado determinadas características en cualquier formulario mediante un botón Información técnica. Para ejecutar la aplicación de ejemplo Soluciones · Escriba lo siguiente en la ventana Comandos: DO (HOME() + 'samples\solution\solution') – O bien – 1 En el menú Programa, elija Ejecutar. 2 Elija la carpeta Ejemplos. 3 Elija la carpeta Soluciones. 4 Haga doble clic en Solution.app. En el formulario principal Ejemplos de soluciones, verá que los ejemplos están clasificados en las siguientes categorías: Controles, Bases de datos, Formularios, Menús, Ole, Informes, Barras de herramientas y Winapi. Para ver todos los componentes de esta vista de árbol, elija el botón Expandir todo y desplácese por los componentes. Cuando ya haya encontrado un ejemplo o un componente que le interese, resáltelo para seleccionarlo. A continuación puede realizar una o todas las siguientes acciones: · Leer una breve descripción del ejemplo en el área de descripción situada en la parte inferior del formulario principal de Soluciones. · Ejecutar el ejemplo eligiendo Ejecutar ejemplo. · Ver el código eligiendo Ver código. Después de cerrar el formulario o el diseñador que está abierto, regresará El ejemplo Importadores Tastrade es una muestra de una aplicación integrada de Visual FoxPro. La aplicación es un sistema de entrada de pedidos para una empresa ficticia de importación y exportación que vende productos culinarios típicos de todo el mundo. Importadores Tastrade proporciona la funcionalidad de introducción de pedidos, lo que permite a los usuarios: · Crear nuevos pedidos. · Agregar elementos a pedidos directamente. · Seleccionar elementos procedentes de pedidos anteriores. · Calcular las extensiones de elemento de línea, subtotales, y totales de pedidos preparados para descuentos y flete. Además, la aplicación demuestra la seguridad a nivel de usuario pidiendo a los usuarios que inicien una sesión en la aplicación antes de ver o editar datos. Se ha documentado cada paso en la programación de la aplicación Importadores Tastrade como se indica a continuación: · Crear la especificación · Diseñar la base de datos · Crear estructuras y relaciones entre tablas · Seguridad · Integridad de datos · Mantenimiento de bases de datos · Comentarios sobre la creación de la base de datos · Diseñar y crear clases · Funcionalidad a nivel de aplicación · Funcionalidad a nivel de formularios · Funcionalidad a nivel de controles · Comentarios sobre las clases · Escribir, comprobar y depurar el código de la aplicación · Formularios · Informes · Menús y barras de herramientas · Manipulación de errores · Depuración · El programa principal · Comentarios sobre el código Para ejecutar Importadores Tastrade · Escriba la siguiente línea de código en la ventana Comandos: DO (HOME() + 'samples\tastrade\tastrade') – O bien – 1 En el menú Programa, elija Ejecutar. 2 Elija la carpeta Ejemplos. 3 Elija la carpeta Tastrade. 4 Haga doble clic en TASTRADE.APP. Para abrir el proyecto para la aplicación Importadores Tastrade · Escriba la siguiente línea de código en la ventana Comandos: MODIFY PROJECT (HOME() + 'samples\tastrade\tastrade') al formulario principal de Soluciones. Ejemplo Acceso Ejemplos de Soluciones Más de 90 ejemplos distintos en los que se enseña a realizar tareas específicas de Visual FoxPro, desde simples formularios de entrada de datos, hasta cuadros de diálogo con fichas ajustadas dinámicamente, pasando por llamadas a la API de Windows. AbrirEjecutar Importadores Tastrade Una aplicación de Visual FoxPro integrada con seguridad de inicio de sesión, funcionalidad de entrada de pedidos, historial de pedidos, facturas y otras implementaciones de la vida real. AbrirEjecutar Cliente-servidor Una aplicación en la que se muestran algunas de las características que hacen de Visual FoxPro una herramienta de programación para el usuario ideal para aplicaciones cliente-servidor, incluyendo vistas fuera de línea, upsizing y programación simultánea. AbrirEjecutar Servidores OLE Tres ejemplos distintos de servidores OLE personalizados y su utilización en Visual FoxPro. Visual FoxPro también proporciona Bibliotecas de clases de ejemplo y Programas de utilidades con funcionalidad que podrá incluir fácilmente en sus aplicaciones. CREACION DE UN ARCHIVO Convenciones de la sintaxis Se utilizan las siguientes convenciones tipográficas: Ejemplo Convención SET HELP TO Las letras mayúsculas hacen referencia a comandos, palabras clave, acrónimos, siglas, constantes y nombres de dispositivos. Presione la tecla TAB. Presione MAYÚS+F1. Las versales indican nombres de teclas del teclado. Un signo más (+) indica una combinación de teclas. BUTTONS.VCX Las letras mayúsculas indican nombres de archivo. C:\WINDOWS Para los nombres de rutas de acceso se emplean letras mayúsculas con barras invertidas de separación. FontSize Las mayúsculas iniciales indican los nombres de objetos, eventos, propiedades y métodos. Si el nombre consta de más de una palabra, se concatenarán las palabras con mayúsculas iniciales. controlado por eventos Las letras en cursiva indican términos que se definen la primera vez que aparecen en el texto. IF StatusText() = "Test" = MESSAGEBOX( "OK" ) ENDIF La fuente de un solo espacio indica las líneas de comando que usted escribe, ejemplos de código, y referencias textuales a los ejemplos de código. USE customer Las letras minúsculas indican nombres de tablas y de campos. nTotal, cName Los nombres de variables y marcadores llevan como prefijo letras minúsculas. El prefijo indica el tipo de la variable: c para Character, n para Numeric, l para Logical, d para Date, t para DateTime, y para Currency, o para Object y e para cualquier expresión. En la sintaxis se utilizarán las siguientes convenciones: Ejemplo Convención DELETE VIEW NombreVista En la sintaxis, las palabras en cursiva son marcadores para información que usted debe suministrar. [STYLE cNombreEstilo] En la sintaxis, los corchetes abarcan a todos los elementos opcionales. SET BELL ON | OFF En la sintaxis, una barra vertical separa dos opciones mutuamente exclusivas. [, NombreVentana2 …] En la sintaxis, los puntos suspensivos indican que un elemento puede repetirse en una lista el número de veces que desee. Los elementos de la lista van separados por comas. Clases y objetos A Application (Objeto) B C CheckBox (Control) Column (Objeto) ComboBox (Control) CommandButton (Control) CommandGroup (Control) Container (Objeto) Control (Objeto) Cursor (Objeto) Custom (Objeto) D DataEnvironment (Objeto) E EditBox (Control) F Form (Objeto) FormSet (Objeto) G Grid (Control) H Header (Objeto) I Image (Control) J K L Label (Control) Line (Control) ListBox (Control) M N O Object (Colección) OLE Bound (Control) OLE Container (Control) OptionButton (Control) OptionGroup (Control) P Page (Objeto) PageFrame (Control) Q R Relation (Objeto) S Separator (Objeto) Shape (Control) Spinner (Control) T TextBox (Control) THIS (Referencia de objeto) THISFORM (Referencia de objeto) THISFORMSET (Referencia de objeto) Timer (Control) ToolBar (Objeto) Rutinas de menús Estas rutinas de la API le permiten crear, manipular y liberar menús. _ActivateMenu( ) Muestra el menú especificado en la pantalla y devuelve inmediatamente el control a la rutina que ha efectuado la llamada. _CountItems( ) Devuelve el número de títulos o barras de menú del menú especificado. _DeActivateMenu( ) Elimina un menú de la pantalla. _DisposeItem( ) Libera el elemento de menú especificado y toda la memoria asociada a ese elemento. _DisposeMenu( ) Libera el menú especificado y toda la memoria asociada a ese menú. _GetItemCmdKey( ) Copia la cadena del método abreviado de teclado del elemento de menú especificado al búfer al que apunta el parámetro texto. _GetItemId( ) Devuelve el identificador de elemento del elemento de índice en el menú especificado. _GetItemSubMenu( ) Devuelve el identificador de elemento de menú o submenú asignado a un elemento de menú. _GetItemText( ) Copia el texto de una barra de menú o un título de menú al búfer al que apunta texto. _GetNewItemId( ) Devuelve un identificador que está disponible actualmente para usarlo como identificador de elemento en el menú especificado. _GetNewMenuId( ) Devuelve un identificador que está disponible para usarlo como identificador de menú. _MenuId( ) Devuelve el identificador de menú real que corresponde al literal definido por el sistema para el título de menú o menú del sistema. _MenuInteract( ) Establece el elemid y el menúid para indicar qué elemento de menú se ha seleccionado, en caso de que se hubiera seleccionado alguno. _NewItem( ) Agrega un elemento con el elemid especificado al menú indicado por menúid. _NewMenu( ) Crea un nuevo menú del tipo de menú especificado. _OnSelection( ) Especificará una rutina que se ejecutará cuando se seleccionen el menú y el elemento especificados. _SetItemCmdKey( ) Establece el método abreviado de teclado para el elemento de menú especificado, así como el texto que se mostrará para dicho método abreviado de teclado. _SetItemSubMenu( ) Asigna un submenú a un elemento de menú. Se puede usar para adjuntar un menú a un título, o un submenú a un elemento de menú. _SetItemText( ) Cambia el texto de un elemento de menú. El elemento puede ser un título o una barra. _SetMenuPoint( ) Especifica la esquina superior izquierda, loc, de un menú. _SetMenuPointP( ) Especifica en píxeles la posición en la pantalla de la esquina superior izquierda, loc, de un menú. Rutinas que devuelven resultados a Visual FoxPro Estas rutinas de la API le permiten devolver resultados a Visual FoxPro en el tipo de datos especificado. _RetChar( ) Establece el valor de devolución de la función a una cadena terminada en nulo. _RetCurrency( ) Establece el valor de devolución de la biblioteca a valor de moneda. _RetDateStr( ) Establece el valor de devolución de la función a una fecha. La fecha se especifica en el formato mm/dd/aa, donde el año puede tener dos o cuatro dígitos. _RetDateTimeStr( ) Establece el valor de devolución de la biblioteca a fechahora. _RetFloat( ) Establece el valor de devolución de la función a un valor flotante. _RetInt( ) Establece el valor de devolución de la función a un valor numérico. _RetLogical( ) Establece el valor de devolución de la función a un valor lógico. Cero se considera False. Otro valor distinto de cero se considera True. _RetVal( ) Pasa una estructura completa de Visual FoxPro por valor, por lo que se puede devolver cualquier tipo de datos de Visual FoxPro excepto memo. Se debe llamar a _RetVal( ) para devolver una cadena que contenga caracteres nulos. Archivos distribuibles Puede distribuir cualquier archivo de Visual FoxPro que no esté restringido. Según el Acuerdo de licencia recibido con el producto, los archivos se deben distribuir con la aplicación correspondiente. Las siguientes directrices se aplican a los archivos distribuibles. Asistente para instalación Cualquier archivo de los directorios DISTRIB.SRC y SETUP de Visual FoxPro necesarios para dar soporte a la aplicación correspondiente se puede distribuir. Cuando usa el Asistente para instalación para crear discos de distribución, coloca automáticamente los archivos necesarios de estos directorios en los discos distribuibles en formato comprimido. En la instalación, estos archivos se descomprimen y se instalan por nombre en los directorios apropiados en la máquina del usuario. No es necesario copiar estos archivos en el árbol de distribución. Ejemplos Los archivos de los directorios SAMPLES y API\SAMPLE de Visual FoxPro se proporcionan para que aprenda y trabaje con ellos. Aunque no puede modificar aplicaciones de ejemplo no modificadas de Visual FoxPro, puede utilizar partes del código de aplicaciones de ejemplo para crear su propia aplicación. Si usa cualquier archivo de los directorios SAMPLES y API\SAMPLE de Visual FoxPro (incluyendo todos los archivos .BMP, .ICO y .CUR), estos archivos se deben incluir en el proyecto y en la aplicación generada. No debe aparecer su nombre en los discos distribuibles y no se pueden distribuir independientemente de las aplicaciones. Bibliotecas de clases Puede usar cualquier archivo .VCX sin modificación en sus aplicaciones. Las bibliotecas se deben incluir en el proyecto y en la aplicación generada. Archivos ODBC Consulte el Acuerdo de licencia de Microsoft que ha recibido con este producto para conocer las restricciones específicas con respecto a la redistribución de archivos ODBC. Controles ActiveX Visual FoxPro incluye un conjunto de controles ActiveX (archivos .OCX) que puede agregar y distribuir con sus aplicaciones. Nota Si instala la documentación en pantalla de Visual FoxPro, se instala el control ActiveX MediaView 1.41 (MEDV141N.OCX). Este control ActiveX sólo admite el examen de la documentación en pantalla; no se puede agregar o distribuir con sus aplicaciones. Archivos restringidos Visual FoxPro contiene muchos archivos que se licencian sólo para su uso en propósitos de diseño, programación y prueba. Consulte el archivo LICENSE.TXT, ubicado en el directorio de Visual FoxPro, para obtener una lista de los archivos restringidos. Si su aplicación contiene cualquiera de estos archivos, quítelo. Bajo los términos del Acuerdo de licencia de Microsoft que recibió con este producto, no se le permite incluir estos archivos en su aplicación o en sus discos. El Asistente para instalación comprueba estos archivos y los excluirá del conjunto de discos para distribución. No asigne estos nombres de archivo a ninguno de los archivos que vaya a distribuir. El Asistente para instalación excluirá cualquier archivo que tenga un nombre idéntico a uno de esta lista. Para obtener información sobre los archivos que puede distribuir en su aplicación, vea Archivos distribuibles. Estructura de archivos de tabla(.DBC, .DBF, .FRX, .LBX, .MNX, .PJX, .SCX, .VCX) Estructura de archivos de tabla(.DBC, .DBF, .FRX, .LBX, .MNX, .PJX, .SCX, .VCX) Visual FoxPro usa tablas para almacenar datos que definen distintos tipos de archivos. Los tipos de archivos que se guardan como archivos de tabla son: · Tabla (.DBF) · Base de datos (.DBC) · Formulario (.SCX) · Etiqueta (.LBX) · Menú (.MNX) · Proyecto (.PJX) · Informe (.FRX) · Biblioteca de clases Visual (.VCX) Como estos archivos son tablas en realidad, puede usarlos y examinarlos de la misma forma que examina cualquier archivo .DBF. Un archivo de tabla está formado por un registro de encabezado y por registros de datos. El registro de encabezado define la estructura de la tabla y contiene cualquier otra información relacionada con la tabla. Comienza en la posición de archivo cero. Los registros de datos1 siguen al encabezado (en bytes consecutivos) y contienen el texto real de los campos. Para obtener información sobre las estructuras de tabla de los distintos tipos de archivo, ver Estructuras de tabla o estructuras de archivos. La longitud de un registro (en bytes) se determina sumando las longitudes definidas de todos los campos. En los archivos de tabla, los enteros se almacenan con el byte menos significativo en primer lugar. Estructura del registro de encabezado de la tabla Desplazamiento de bytes Descripción 0 Tipo de archivo 0x02 FoxBASE 0x03 FoxBASE+/dBASE III PLUS, sin memo 0x30 Visual FoxPro 0x43 dBASE IV SQL archivos de tabla, sin memo 0x63 dBASE IV SQL archivos de sistema, sin memo 0x83 FoxBASE+/dBASE III PLUS, con memo 0x8B dBASE IV con memo 0xCB dBASE IV SQL archivos de tabla, con memo 0xF5 FoxPro 2.x (o anterior) con memo 0xFB FoxBASE 1 – 3 Última actualización (YYMMDD) 4 – 7 Número de registros de un archivo 8 – 9 Posición del primer registro de datos 10 – 11 Longitud de un registro de datos (incluyendo el indicador de eliminación) 12 – 27 Reservado 28 Indicadores de tabla 0x01 el archivo tiene un .CDX estructural 0x02 el archivo tiene un campo Memo 0x04 el archivo es una base de datos (.DBC) Observe que este byte puede contener la suma de cualquiera de los valores anteriores. Por ejemplo, 0x03 indica que la tabla tiene un .CDX estructural y un campo Memo. 29 Marca de página de códigos 30 – 31 Reservado, contiene 0x00 32 – n Subregistros de campo El número de campos determina el número de subregistros de campo. Hay un subregistro de campo por cada campo de la tabla. n+1 Final de registro de encabezado (0x0D) n+2 a n+264 Intervalo de 263-bytes que contiene la información de vínculo anterior (la ruta relativa de un base de datos asociada (.DBC)). Si el primer byte es 0x00, el archivo no está asociado a una base de datos. Por lo tanto, las bases de datos siempre contienen el 0x00. 1 En el archivo de datos, los datos comienzan en la posición indicada por los bytes 8 a 9 del registro de encabezado. Los registros de datos comienzan con un byte indicador de eliminación. Si este byte es un espacio ASCII (0x20) el registro no se borra; si el primer byte es un asterisco (0x2A) el registro es eliminado. Los datos de los campos nombrados en los subregistros de campo van detrás del indicador de eliminación. Estructura de los subregistros de campo Desplazamiento de bytes Descripción 0 – 10 Nombre de campo (máximo de 10 caracteres — si hay menos de 10 caracteres, se rellena con caracteres nulo (0x00)) 11 Tipo de archivo: C – Character Y – Currency N – Numeric F – Float D – Date T – DateTime B – Double I – Integer L – Logical M – Memo G – General C – Character (binario) M – Memo (binario) P – Picture 12 – 15 Desplazamiento de campo en el registro 16 Longitud de campo (en bytes) 17 Número de cifras decimales 18 Indicadores de campo 0x01 Columna de sistema (no es visible para el usuario) 0x02 La columna puede almacenar valores nulo 0x04 Columna binaria (sólo para CHAR y MEMO) 19 – 32 Reservado Para obtener información sobre limitaciones de número de caracteres por registro, número máximo de campos, etc., consulte Capacidades del sistema de Visual FoxPro. Comentarios Visual FoxPro no modifica el encabezado de un archivo guardado en formato de archivo FoxPro 2.x a menos que se le haya añadido al archivo alguna de las siguientes características: · Compatibilidad con el valor nulo · Tipos de datos DateTime, Currency y Double · Se marca como binario un campo CHAR o MEMO · Se agrega una tabla a un archivo de base de datos (.DBC) Sugerencia Se puede usar la siguiente fórmula para obtener el número de campos de un archivo de tabla:(x – 296/32). En la fórmula, x es la posición del primer registro (bytes 8 a 9 en el registro de encabezado de la tabla), 296 es 263 (información de vínculo anterior) + 1 (final del registro de encabezado) + 32 (primer subregistro de campo) y 32 es la longitud de un subregistro de campo. Estructuras de tabla de archivos de tabla (.DBC, .FRX, .LBX, .MNX, .PJX, .SCX, .VCX) Las descripciones de las estructuras de tabla están almacenadas en archivos situados en el directorio FILESPEC. El directorio FILESPEC contiene dos proyectos: 50SPEC.PJX y 26SPEC.PJX. 50SPEC.PJX contiene tablas e informes que documentan los archivos de tabla de la versión 5.0 de Visual FoxPro. 26SPEC.PJX contiene tablas e informes que documentan los archivos de tabla de la versión 2.6 de FoxPro. Para ver las descripciones de cualquier estructura de tabla, imprima el informe adecuado. La lista de tablas siguiente presenta los tipos de archivo y sus informes asociados. Algunos tipos de archivos requieren más de un informe porque hay demasiadas columnas para ajustarse al ancho de una única página. Nota Todos los informes tienen formato para impresión horizontal. Visual FoxPro Para ver la estructura de una tabla de: Imprima este informe Que utiliza: Base de datos1 50DBC.FRX 50DBC.DBF Formulario y Biblioteca de clases visuales 50SCX1.FRX 50SCX2.FRX 50SCX.DBF Menú 50MNX.FRX 50MNX.DBF Proyecto 50PJX1.FRX 50PJX2.FRX 50PJX.DBF Informe y etiqueta 50FRX1.FRX 50FRX2.FRX 50FRX.DBF 1 Las propiedades de la base de datos se pueden imprimir de 50DBCPRO.FRX. Versión 2.6 de FoxPro Para ver la estructura de tabla de: Imprima este informe: Que utiliza: Pantalla 26SCX1.FRX 26SCX2.FRX 26SCX.DBF Menú 26MNX.FRX 26MNX.DBF Proyecto 26PJX1.FRX 26PJX2.FRX 26PJX.DBF Informe y etiqueta 26FRX1.FRX 26FRX2.FRX 26FRX.DBF Estructura de archivo memo (.FPT) Los archivos memo contienen un registro de encabezado y un número arbitrario de estructuras de bloque. El registro de encabezado contiene un puntero que apunta al siguiente bloque libre y al tamaño del bloque en bytes. El tamaño está determinado por el comando SET BLOCKSIZE cuando se crea el archivo. El registro de encabezado comienza en la posición cero del archivo y ocupa 512 bytes. El comando SET BLOCKSIZE TO 0 fija en 1 la anchura del bloque. A continuación del registro de encabezado están los bloques que contienen un encabezado de bloque y el texto del memo. El archivo de tabla contiene números de bloque que se usan para hacer referencia a los bloques de memo. La posición del bloque en el archivo memo se determina multiplicando el número de bloque por el tamaño del bloque (encontrado en el registro de encabezado del archivo memo). Todos los bloques memo comienzan en direcciones de límite de bloque pares. Un bloque memo puede ocupar más de un bloque consecutivo. Registro de encabezado de memo Desplazamiento de bytes Descripción 00 – 03 Situación del siguiente bloque libre1 04 – 05 Sin utilizar 06 – 07 Tamaño de bloque (bytes por bloque)1 08 – 511 Sin utilizar 1 Los enteros se almacenan con el byte más significativo en primer lugar. Encabezado de bloque de memo y texto memo Desplazamiento de bytes Descripción 00 – 03 Signatura de bloque 1 (indica el tipo de datos del bloque) 0 – imagen (tipo campo de imagen) 1 – texto (tipo campo memo) 04 – 07 Longitud 1 de memo (en bytes) 08 – n Texto de memo (n = longitud) 1 Los enteros se almacenan con el byte más significativo en primer lugar. Estructura de archivo de índice (.IDX) Los archivos de índice contienen un registro de encabezado y uno o varios registros de nodos. El registro de encabezado contiene información sobre el nodo raíz, el tamaño del archivo actual, la longitud de la clave, opciones de índice y de signatura, y representaciones ASCII imprimibles de la clave1 de expresiones FOR. El registro de encabezado comienza en la posición cero del archivo. Los registros de nodo restantes contienen un atributo, número de claves presentes y punteros que apuntan a nodos a la izquierda y a la derecha (en el mismo nivel) del nodo actual. También contienen un grupo de caracteres que rodean el valor clave y o bien un puntero que apunta a un nodo de nivel más bajo, o bien un número de registro de tabla actual. El tamaño de cada registro que sale a un archivo es de 512 bytes. Registro de encabezado de índice Desplazamiento de bytes Descripción 00 – 03 Puntero dirigido al nodo raíz 04 – 07 Puntero dirigido a la lista de nodos libres ( – 1 si no está presente) 08 – 11 Puntero dirigido al final del archivo (tamaño de archivo) 12 – 13 Longitud de clave 14 Opciones de índice (cualquiera de los valores numéricos siguientes o sus sumas): 1 – un índice único 8 – el índice tiene una cláusula FOR 15 Signatura de índice (para uso futuro) 16 – 235 Expresión clave (sin compilar; hasta 220 caracteres)1,3 236 – 455 Expresión FOR (sin compilar; hasta 220 caracteres, finalizando con un byte de valor nulo) 456 – 511 Sin utilizar Registro de nodos de índice Desplazamiento de bytes Descripción 00 – 01 Atributos de nodos (cualquiera de los valores numéricos siguientes o sus sumas): 0 – nodo índice 1 – nodo raíz 2 – nodo terminal 02 – 03 Número de claves presentes (0, 1 o muchas) 04 – 07 Puntero dirigido al nodo situado directamente a la izquierda del nodo actual (en el mismo nivel; -1 si no está presente) 08 – 11 Puntero dirigido al nodo situado directamente a la derecha del nodo actual (en el mismo nivel; -1 si no está presente) 12 – 511 Hasta 500 caracteres que contienen el valor clave para la longitud de la clave con un número hexadecimal de cuatro bytes (almacenado en formato de izquierda a derecha normal): Si el nodo es una hoja (atributo = 02 o 03), los cuatro bytes contienen un número de tabla actual en formato hexadecimal; si no, los 4 bytes contienen un puntero entre índices.2Las combinaciones de números hexadecimales clave/cuatro-bytes se darán el número de veces indicado en los bytes 02-03. Notas 1. El tipo de clave no se almacena en el índice. Debe ser determinado por la expresión clave. 2. Todos los tipos menos las cadenas de caracteres, los números usados como valores clave y los números de cuatro bytes del nodo secundario se representan en bytes invertidos (formato Intel 8086). 3. Los números son un caso especial cuando se usan como clave. Son convertidos mediante el siguiente algoritmo de forma que pueden ordenarse usando la misma secuencia de ordenación ASCII que los caracteres: · Se convierte el número al formato de coma flotante IEEE. · Se intercambia el orden de los bytes del orden Intel 8086 al orden izquierda a derecha. · Si el número era negativo, se toma el complemento lógico del número (se intercambian los 64 bits, 1 a 0 y 0 a 1); si no, sólo se invierte el bit más a la izquierda. Ejemplo de estructura de árbol ordenada Para encontrar una clave en la estructura siguiente hay que buscar un sólo camino entre el nodo primario y los nodos secundarios. Los nodos del nivel más bajo son nodos secundarios. Como las claves están ordenadas, todas las claves del subárbol son menores o iguales que el nodo primario. En la ilustración anterior, las letras se usan como los valores clave. Cada clave también tendría un número hexadecimal de cuatro bytes. Los números asociados con las claves de los nodos secundarios serían los números de tabla actuales — todas las claves de los otros nodos tendrían asociados punteros entre índices. Podríamos ver los bytes 12-511 en el registro de nodo índice de la siguiente forma: La combinación de números valor/hexadecimal clave se da n veces en los bytes 12-511 en donde n es el número de claves presentes. Estructura de archivo de índice compacto (.IDX) Registro de encabezado de índice compacto Desplazamiento de bytes Descripción 00 – 03 Puntero dirigido al nodo raíz 04 – 07 Puntero dirigido a la lista de nodos libres ( – 1 si no está presente) 08 – 11 Reservado para uso interno 12 – 13 Longitud de clave 14 Opciones de índice (cualquiera de los valores numéricos siguientes o sus sumas): 1 – un índice único 8 – el índice tiene una cláusula FOR 32 – formato de índice compacto 64 – encabezado de índice compuesto 15 Signatura de índice 16 – 19 Reservado para uso interno 20 – 23 Reservado para uso interno 24 – 27 Reservado para uso interno 28 – 31 Reservado para uso interno 32 – 35 Reservado para uso interno 36 – 501 Reservado para uso interno 502 – 503 Ascendiente o descendiente: 0 = ascendiente 1 = descendiente 504 – 505 Reservado para uso interno 506 – 507 Longitud de conjunto de expresión FOR1 508 – 509 Reservado para uso interno 510 – 511 Longitud de conjunto de expresión clave1 512 – 1023 Conjunto de expresión clave (sin compilar) 1 Esta información sigue la pista del espacio usado en el conjunto de expresión clave. Registro de nodo interior de índice compacto Desplazamiento de bytes Descripción 00 – 01 Atributos de nodo (cualquiera de los siguientes valores numéricos o sus sumas: a. 0 – nodo índice b. 1 – nodo primario c. 2 – nodo secundario 02 – 03 Número de claves presentes (0, 1 o muchas) 04 – 07 Puntero dirigido al nodo situado directamente a la izquierda del nodo actual (en el mismo nivel; – 1 si no está presente) 08 – 11 Puntero dirigido al nodo situado directamente a la derecha del nodo actual (en el mismo nivel; – 1 si no está presente) 12 – 511 Hasta 500 caracteres conteniendo el valor clave para la longitud de la clave con un número hexadecimal de cuatro bytes (almacenado en formato normal de izquierda a derecha):Este nodo siempre contiene la clave índice, número de registro y puntero entre índices.2Las combinaciones de número hexadecimal clave/cuatro bytes se darán el número de veces indicado en los bytes 02 – 03. Registro de nodo exterior de índice compacto Desplazamiento de bytes Descripción 00 – 01 Atributos de nodo (cualquiera de los siguientes valores numéricos o sus sumas): 0 – nodo índice 1 – nodo raíz 2 – nodo hoja 02 – 03 Número de claves presentes (0, 1 o muchas) 04 – 07 Puntero dirigido al nodo situado directamente a la izquierda del nodo actual (en el mismo nivel; – 1 si no está presente) 08 – 11 Puntero dirigido al nodo situado directamente a la derecha del nodo actual (en el mismo nivel; – 1 si no está presente) 12 – 13 Espacio libre disponible en el nodo 14 – 17 Máscara de número de registro 18 Máscara de cuenta de bytes duplicados 19 Máscara de cuenta de bytes de la derecha 20 Número de bits usados para número de registro 21 Número de bits usados para cuenta duplicada 22 Número de bits usados para cuenta de la derecha 23 Número de bytes conteniendo número de registro, cuenta duplicada y cuenta de la derecha 24 – 511 Claves índice e información2 2 Cada entrada está formada por el número de registro, cuenta de bytes duplicada y cuenta de bytes de la derecha, todo compactado. El texto clave está colocado en el final lógico del nodo, funcionando hacia atrás, teniendo en cuenta entradas clave anteriores. Introduccion al lenguaje: Tipos de datos y campos Todos los datos de Visual FoxPro tienen un tipo, como una descripción de los valores permitidos y el intervalo y tamaño de los valores. Cuando haya especificado el tipo de datos que está usando, Visual FoxPro puede almacenar y manipular los datos de forma eficaz. Las variables y las matrices contienen un subconjunto de los tipos de datos disponibles de Visual FoxPro. Los tipos de datos adicionales sólo están disponibles para campos de la tabla. Para agregar un campo de un tipo específico a una tabla mediante programación, especifique el tipo de campo con una letra. Para obtener más información, vea la descripción de TipoCampo en CREATE TABLE - SQL. Tipos de datos de Visual FoxPro Tipo de datos Descripción Tamaño Intervalo Character Cualquier texto 1 byte por carácter hasta 254 Cualquier carácter Currency Cantidades monetarias 8 bytes – 922337203685477.5808 a 922337203685477.5807 Date Datos cronológicos formados por mes, año y día 8 bytes 01/01/100 a 12/31/9999 DateTime Datos cronológicos formados por mes, año, día y hora 8 bytes 01/01/100 a 12/31/9999, más 00:00:00 a.m. a 11:59:59 p.m. Logical Valor booleano verdadero o falso 1 byte Verdadero (.T.) o Falso (.F.) Numeric Enteros o fracciones 8 bytes en la memoria; 1 a 20 bytes en una tabla – .9999999999E+19 a .9999999999E+20 Tipos de campos de Visual FoxPro Tipo de campo Descripción Tamaño Intervalo Double Número de coma flotante de precisión doble 8 bytes +/– 4.94065645841247E-324 a +/–8.9884656743115E307 Float Igual que Numeric 8 bytes en la memoria; 1 a 20 bytes en una tabla – .9999999999E+19 a .9999999999E+20 General Referencia a un objeto OLE 4 bytes en una tabla Limitado por la memoria disponible Integer Valores enteros 4 bytes –2147483647 a 2147483646 Memo Referencia a un bloque de datos 4 bytes en una tabla Limitado por la memoria disponible Character (Binario) Datos de tipo carácter que quiere mantener sin modificación en páginas de códigos 1 byte por carácter hasta 254 Cualquier carácter Memo (Binario) Datos de campo memo que quiere mantener sin modificación en páginas de códigos 4 bytes en una tabla Limitado por la memoria disponible Almacenar datos La tabla siguiente resume las diferencias de alcance entre contenedores de datos. Contenedor Alcance Ejemplo Constantes Privado #DEFINE ERRSTR "¡Error!" Variables Público, privado o local Var = 7 Matrices Público, privado o local ArrayName[1,1] = "John Brown" Campos Almacenamiento permanente, accesible mientras esté abierta la tabla que contiene los registros REPLACE name WITH "John Brown" Propiedades de objeto Se hace referencia a ellas a través del objeto y de la jerarquía del contenedor del objeto txtCustomer.Value = "John Brown" Visual FoxPro y otros lenguajes de programación La mayoría de los lenguajes de programación tienen características básicas similares. Si está familiarizado con un lenguaje de programación, puede traducir fácilmente estos conocimientos a otro lenguaje de programación. Elija un elemento de los que aparecen abajo para ver una comparación entre Visual FoxPro, BASIC, C/C++, y Pascal. Para comparar Vea Cuándo el lenguaje distingue mayúsculas de minúsculas Distinción entre mayúsculas y minúsculas Cómo declarar variables Declaración de variables Cómo insertar comentarios en programas Comentarios Cómo almacenar valores en variables Instrucciones de asignación La estructura de instrucciones IF Instrucciones IF La estructura de instrucciones CASE Instrucciones CASE La estructura de bucles FOR Bucles FOR La estructura de bucles WHILE Bucles WHILE Cómo pasar parámetros por valor Paso de parámetros por valor Cómo pasar parámetros por referencia Paso de parámetros por referencia Páginas de códigos compatibles con Visual FoxPro Una página de códigos es un conjunto de caracteres específico de un lenguaje o de una plataforma hardware. Los caracteres acentuados no están representados por los mismos valores en distintas plataformas y páginas de códigos. Además, algunos caracteres que están disponibles en una página de códigos no lo están en otra. Página de códigos Plataforma Identificador de página de código 437 MS-DOS U.S. x01 620 1 MS-DOS Mazovia (Polaco) x69 737 1 MS-DOS (437G) Griego x6A 850 MS-DOS Internacional x02 852 MS-DOS de Europa Oriental x64 861 MS-DOS Islandés x67 865 MS-DOS Nórdico x66 866 MS-DOS Ruso x65 895 1 MS-DOS Kamenicky (Checo) x68 857 MS-DOS Turco x6B 1250 Windows de Europa Oriental xC8 1251 Windows Ruso xC9 1252 Windows ANSI x03 1253 Windows Griego xCB 1254 Windows Turco xCA 10000 Macintosh Estándar x04 10006 Macintosh Griego x98 10007 1 Macintosh Ruso x96 10029 Macintosh EE x97 1 No detectado cuando incluye CODEPAGE=AUTO en su archivo de configuración. Extensiones de archivo y tipos de archivo Esta tabla presenta las extensiones y sus tipos de archivos asociados que se usan con Visual FoxPro. Extensión Tipo de archivo .ACT Diagrama de acción del Asistente para documentación .APP Aplicación generada .CDX Índice compuesto .DBC Base de datos .DBF Tabla .DCT Memo de base de datos .DCX Índice de base de datos .DLL Biblioteca de vínculos dinámicos de Windows .ERR Error de compilación .ESL Biblioteca de compatibilidad de Visual FoxPro .EXE Programa ejecutable .FKY Macro .FLL Biblioteca de vínculos dinámicos de FoxPro .FMT Archivo de formato .FPT Memo de tabla .FRT Memo de informe .FRX Informe .FXP Programa compilado .H Archivo de encabezado (para incluir en un programa de Visual FoxPro o C/C++) .HLP Ayuda gráfica .IDX Índice, índice compacto .LBT Memo de etiqueta .LBX Etiqueta .LST Lista del Asistente para documentación .MEM Variables guardadas .MNT Memo de menú .MNX Menú .MPR Programa de menú generado .MPX Programa de menú compilado .OCX Control OLE .PJT Memo de proyecto .PJX Proyecto .PRG Programa .QPR Programa de consulta generado .QPX Programa de consulta compilado .SCT Memo de formulario .SCX Formulario .SPR Programa de pantalla generado (sólo en versiones anteriores de FoxPro) .SPX Programa de pantalla compilado (sólo versiones anteriores de FoxPro) .TBK Copia de seguridad de memo .TXT Texto .VCT Memo de biblioteca de clases visuales .VCX Memo de biblioteca de clases visuales .VUE Presentación de FoxPro 2.x .WIN Archivo de ventana Métodos abreviados del teclado Las tablas de este tema muestran los métodos abreviados de Visual FoxPro para ejecutar comandos de menú, manipular ventanas, acceder a la Ayuda, y usar definiciones de macro predefinidas. Comandos de menú Teclas de método abreviado Comando Sirve para CTRL+A Seleccionar todo (Menú Edición) Editar texto CTRL+C Copiar (Menú Edición) CTRL+D Ejecutar (Menú Programa) CTRL+E Eliminar elemento (Menú Menú) Diseñar menús CTRL+E Ejecutar (Menú Programa) Programas CTRL+F Buscar (Menú Edición) CTRL+H Cambiar tamaño de particiones (Menú Tabla) Ventanas Examinar CTRL+I Insertar elemento (Menú Menú) Diseñar menús CTRL+J Información del proyecto (Menú Proyecto) Proyectos CTRL+L Reemplazar (Menú Edición) CTRL+M Reanudar (Menú Programa) Programas CTRL+N Nuevo (Menú Archivo) CTRL+O Abrir (Menú Archivo) CTRL+P Imprimir (Menú Archivo) CTRL+Q Ejecutar consulta (Menú Consulta) Consultas Cuando el Diseñador de consultas no está activo, CTRL+Q cierra la ventana activa o el cuadro diálogo. CTRL+R Rehacer (Menú Edición) CTRL+S Guardar (Menú Archivo) CTRL+T Alternar marca de eliminación (Menú Tabla) Ventanas Examinar CTRL+V Pegar (Menú Edición) CTRL+W Cierra la ventana de Texto actual o el cuadro de diálogo y guarda los cambios. CTRL+X Cortar (Menú Edición) CTRL+Y Agregar nuevo registro (Menú Tabla) Ventanas Examinar CTRL+Z Deshacer (Menú Edición) Manipulación de ventanas Teclas de método abreviado Acción CTRL+F1 Recorre las ventanas CTRL+F2 Muestra la ventana Comandos CTRL+F4 Cierra la ventana activa CTRL+F5 Restaura una ventana maximizada CTRL+F6 Recorre las ventanas CTRL+F7 Mueve la ventana activa CTRL+F8 Ajusta el tamaño de la ventana activa CTRL+F9 Minimiza la ventana activa CTRL+F10 Maximiza la ventana activa CTRL+ALT+SHIFT Oculta todas las ventanas secundarias mientras las teclas están presionadas. Ocultar las ventanas hace más fácil ver la salida que se presenta en la ventana principal de la aplicación. Ayuda F1 Muestra el Índice de la Ayuda o Ayuda interactiva sobre elementos activos (por ejemplo, una palabra clave resaltada en la ventana Comandos o la propiedad actual de la ventana Propiedades). SHIFT+F1 Activa la Ayuda interactiva solicitada por el usuario. El puntero de inserción cambia a un signo de interrogación de forma que se puede hacer clic en un elemento (por ejemplo, un comando de menú o una barra de herramientas) para mostrar Ayuda interactiva. Ventana Propiedades CTRL+ALT+letra Selecciona la siguiente propiedad en la lista de propiedades que comienza con el carácter de letra. Por ejemplo, presionar CTRL+ALT+B selecciona la próxima propiedad que comience por B. CTRL+PAGE DOWN Moverse al siguiente objeto de la lista desplegable Objetos. CTRL+PAGE UP Moverse al objeto anterior de la lista desplegable Objetos. CTRL+END Moverse al último objeto de la lista desplegable Objetos. CTRL+HOME Moverse al primer objeto de la lista desplegable Objetos. Definiciones de macros predefinidas F2 SET F3 LIST F4 DIRECTORY F5 DISPLAY STRUCTURE F6 DISPLAY STATUS F7 DISPLAY MEMORY F8 DISPLAY F9 APPEND Nota Las definiciones de macro se aplican a la ventana Comandos. Se pueden cambiar las definiciones de macro con el comando Macros del menú Herramientas. Capacidades del sistema de Visual FoxPro Algunas capacidades pueden verse limitadas por la disponibilidad de memoria. Categoría Característica Número Archivos de tabla y de índice Número máximo de registros por archivo de tabla 1000 millones Tamaño máximo de un archivo de tabla 2 gigabytes Número máximo de caracteres por registro 65.500 Número máximo de campos por registro 255 Número máximo de tablas abiertas a la vez 2551 caracteres por campo de tabla 254 Número máximo de bytes por clave de índice en un índice no compacto 2 100 Número máximo de bytes por clave de índice en un índice compacto 2 240 Número máximo de archivos de índice abiertos por tabla sin límite1 Número máximo de índices abiertos en todas las áreas de trabajo sin límite1 Número máximo de relaciones sin límite Longitud máxima de expresiones relacionales sin límite Características de campo Tamaño máximo de campos de caracteres 254 Tamaño máximo de campos numéricos (y Float) 20 Número máximo de caracteres en nombres de campos de una tabla libre 10 Número máximo de caracteres en nombres de campo de una tabla contenida en una base de datos 128 Valor mínimo de un entero -2.147.483.647 Valor máximo de un entero 2.147.483.647 Dígitos de precisión en cálculos numéricos 16 Variables de memoria y matrices Número predefinido de variables de memoria 1.024 Número máximo de variables de memoria 65.000 Número máximo de matrices 65.000 Número máximo de elementos por matriz 65.000 Archivos de programas y procedimientos Número máximo de líneas en archivos de programa fuente sin límite Tamaño máximo de módulos de programa compilados 3 64K Número máximo de procedimientos por archivo sin límite Número máximo de llamadas DO anidadas 128 Número máximo de llamadas DO anidadas 5 Número máximo de comandos de programación estructurada anidados 384 Número máximo de parámetros transferidos 27 Número máximo de transacciones 5 Capacidades del diseñador de informes Número máximo de objetos en una definición de informes sin límite1 Longitud máxima de una definición de informe 20 pulgadas (50,8 centímetros) Número máximo de niveles de agrupamiento 128 Otras capacidades Número máximo de ventanas abiertas (de todos los tipos) sin límite1 Número máximo de ventanas Examinar abiertas 255 Número máximo de caracteres por cadena de caracteres 2 gigabytes línea de comando 8.192 Número máximo de caracteres por control etiqueta en un informe 252 Número máximo de caracteres por línea de subst. de macro 8.192 Número máximo de archivos abiertos Límite del sistema Número máximo de pulsaciones en macro de teclado 1.024 Número máximo de campos que se pueden seleccionar mediante una instrucción SQL SELECT 255 1 Limitado por memoria y controladores de archivo disponibles. Los archivos .CDX sólo usan un controlador de archivo.2 Si en la secuencia de ordenación está establecido MACHINE, cada carácter utiliza un byte. Si en la secuencia de ordenación no está establecido MACHINE, cada carácter utiliza dos bytes. Si el campo indexado admite valores nulos, se utiliza un byte adicional en la clave del índice. Observe que los índices no machine son siempre compactos.3 Un módulo de programa es un procedimiento. Un programa o aplicación puede contener un número ilimitado de módulos de programa. DISEÑADORES: Diseñador de clases Utilice el Diseñador de clases para crear y modificar visualmente clases. Cuando la ventana del Diseñador de clases está activa, Visual FoxPro muestra el menú Clase. El menú Ver le permite abrir herramientas complementarias de generación de clases, como la ventana Propiedades, y la barra de herramientas Controles de formularios y la barra de herramientas Distribución. Las clases se almacenan en archivos (.VCX) de biblioteca de clases. Para modificar más de una clase, debe abrir múltiples Generadores de clases al mismo tiempo. La ventana Diseñador de clases consta de: La ventana Clase Muestra una sola clase. La ventana Clase está acoplada en la esquina superior izquierda del Diseñador de clases y no puede moverse, a menos que la ventana contenga los tipos de barra de herramientas. Formulario Especifica el formulario activo dentro de un conjunto de formularios . El cuadro Formulario sólo está activo cuando el tipo de clase que se está modificando es FormSet. Página Especifica la página activa dentro de un marco de página. El cuadro Página sólo se activa cuando el tipo de clase que se está modificando es PageFrame. Diseñador de conexiones Utilice el Generador de conexiones para crear y modificar conexiones con nombre. Como las conexiones se almacenan como parte de una base de datos, sólo puede utilizar el Diseñador de conexiones si tiene abierta una base de datos. Para obtener más información acerca de crear conexiones, vea "Definir una conexión" en el Capítulo 8, "Crear vistas," en el Manual del programador. Opciones de la ventana Especificar origen de datos Origen de datos, ID de usuario, contraseña Especifica que Visual FoxPro muestre los tres cuadros siguientes: · Origen de datos Le permite elegir un origen de datos de una lista de fuentes de datos ODBC instaladas. · Id. de usuario Le permite introducir un nombre de usuario o Id. si el origen de datos requiere uno. · Contraseña Le permite introducir una contraseña si el origen de datos requiere uno. · Base de datos Le permite elegir una base de datos a la que conectar el origen de datos seleccionado. Cadena de conexión Especifica que Visual FoxPro muestre el cuadro Cadena de conexión, en el cual usted escribe la cadena de conexión. Comprobar conexión Le permite comprobar la conexión para la que ha introducido información. Si la conexión se realizó correctamente, aparece un cuadro de diálogo para indicarlo. Si la conexión no tuvo éxito, aparece un mensaje de error. Si no se ha especificado información para la conexión, aparece el cuadro de diálogo Seleccionar base de datos, que le permite seleccionar un origen de datos. Nuevo origen de datos Presenta el cuadro de diálogo Orígenes de datos, que le permite agregar, eliminar o configurar orígenes de datos. Mostrar instrucciones de inicio de sesión ODBC Cuando no se especifica la información de inicio de sesión Especifica que Visual FoxPro muestre al usuario el cuadro de diálogo ID de usuario del origen de datos ODBC si el ID de usuario y la contraseña no se almacenan en la definición de la conexión con nombre. Siempre Especifica que Visual FoxPro muestre siempre el cuadro de dialogo ID de usuario del origen de datos ODBC lo cual permite al usuario utilizar un identificador de usuario y una contraseña diferentes de los que se almacenaron con la conexión con nombre. Nunca Especifica que Visual FoxPro no solicite nunca el usuario. Esta opción proporciona la mayor seguridad. Proceso de datos Estas opciones corresponden a las propiedades de conexión que puede establecer también con la función DBSETPROP( ). Para obtener más información acerca de estas propiedades, vea "Propiedades de conexión" en la función DBGETPROP( ). Ejecución asíncrona Especifica una conexión asíncrona. Esta opción corresponde a la propiedad de conexión Asynchronous. Mostrar avisos Especifica la visualización de avisos no interceptables. Esta opción corresponde a la propiedad de conexión DispWarnings. Proceso por lotes Especifica que la conexión opera en modo de proceso por lotes. Esta opción corresponde a la propiedad de conexión "BatchMode". Transacciones automáticas Especifica que el proceso de transacciones se controla automáticamente. Esta opción corresponde a la propiedad de conexión Transactions. Tamaño del paquete Le permite especificar el tamaño de paquete de red (en bytes) para la información transmitida a y desde el sitio remoto de datos. Seleccione una opción de la lista desplegable o escriba un valor. Intervalos de tiempo de espera Estas opciones establecen los valores para las propiedades de conexión que puede configurar también con la función DBSETPROP( ). Para obtener más información acerca de estas propiedades, vea Propiedades de conexión en la función DBGETPROP( ). Conexión (segundos) Especifica el intervalo de tiempo de espera de conexión en segundos. Esta opción corresponde a la propiedad de conexión ConnectTimeout. Consulta (segundos) Especifica el intervalo de tiempo de espera de consulta en segundos. Esta opción corresponde a la propiedad de conexión QueryTimeout. Inactivo (minutos) Especifica el intervalo de tiempo de espera de inactividad en minutos. Las conexiones activas se desactivas tras el intervalo de espera especificado. Esta opción corresponde a la propiedad de conexión IdleTimeout. Tiempo de espera (ms.) Especifica la cantidad de tiempo en milisegundos que se espera antes de que Visual FoxPro determine si la instrucción SQL ha completado su ejecución. Esta opción corresponde a la propiedad de conexión WaitTime. Diseñador de bases de datos El Diseñador de bases de datos muestra todas las tablas, vistas y relaciones contenidas en una base de datos. Cuando la ventana del Diseñador de bases de datos está activa, Visual FoxPro muestra el menú Base de datos y la barra de herramientas Diseñador de bases de datos. Cada tabla se representa por una ventana dimensionable que muestra los campos de la tabla y los índices, si existe alguno. El Diseñador de bases de datos muestra las relaciones persistentes mostrando líneas entre las tablas que conectan los índices. Puede colocar las tablas y las vistas arrastrándolas a su lugar o utilizando el comando Organizar del menú Base de datos. Si desea mostrar u ocultar objetos en la ventana, puede utilizar el comando Propiedades del menú Base de datos. Diseñador de formularios Utilice el Diseñador de formularios para crear y modificar visualmente formularios y conjuntos de formularios. Un conjunto de formularios consta de uno o más formularios que pueden manipularse como una unidad. Los formularios y conjuntos de formularios son objetos con sus propias propiedades, eventos y métodos. Cuando la ventana del Diseñador de formularios está activa, Visual FoxPro muestra el menú Formulario, la barra de herramientas Controles de formularios, el Diseñador de formularios y la ventana Propiedades. La ventana del Diseñador de formularios consta de: Ventana Formulario Contiene un formulario sencillo en el cual puede agregar y modificar controles. Se muestra más de una ventana de formulario en el Diseñador de formularios cuando modifica un conjunto de formularios que contiene múltiples formularios. Las ventanas Formulario pueden moverse por el Diseñador de formularios. Formulario Especifica el formulario activo dentro de un conjunto de formularios. La lista desplegable Formulario sólo se activa cuando el Diseñador de formularios contiene un conjunto de formularios. Ventana de propiedades Barra de diseños visuales Barra de herramientas Página Especifica la página activa dentro de un marco de página. El cuadro Página sólo se activa cuando el tipo de control que se está modificando es un marco de página. Diseñadores de menús y menús emergentes. Utilice el Diseñador de menús y el Diseñador de menús emergentes para crear menús, elementos de menú, submenús de elementos de menú, líneas que separen grupos de elementos de menú relacionados, etc. Con el Diseñador de menús y el Diseñador de menús emergentes, puede personalizar su copia de Visual FoxPro o generar menús para las aplicaciones que piensa distribuir. Los Diseñadores de menús y menús emergentes constan de: Indicador Le permite especificar los títulos de menú y los elementos de menú de su sistema de menús. Control Mover Este es el botón con la flecha de doble punta que aparece a la izquierda de la columna "Indicador". Permite una colocación visual de los elementos de menú en tiempo de diseño. Acción Le permite especificar la acción que ocurre cuando elige el título de menú o el elemento de menú. Por ejemplo, puede ejecutar un comando, abrir un submenú, o ejecutar un procedimiento. Crear Le permite especificar un submenú o procedimiento para un título de menú o elemento de menú. Editar Le permite cambiar un submenú o procedimiento asociado con un título de menú o elemento de menú. Opciones Muestra el cuadro de diálogo Opciones de la acción, en el cual puede definir el método abreviado de teclado y otras opciones de menú. Nivel de menú Le permite elegir el menú o submenú con el que desea trabajar. Vista previa Muestra el menú que está creando. Elemento Insertar Inserta una nueva fila en la ventana del Diseñador de menús. Insertar barra Presenta el cuadro de diálogo Insertar barra de menús del sistema, que le permite insertar elementos de menú estándar de Visual FoxPro. Eliminar Elimina la fila actual del Diseñador de menús. Diseñadores de consultas y vistas Utilice los Diseñadores de consultas y de vistas para crear y modificar consultas y de vistas. Cuando se activa el Diseñador de consultas o el Diseñador de vistas, Visual FoxPro muestra el menú Consulta y la barra de herramientas Consulta o bien la barra de herramientas Diseñador de vistas. El panel superior del diseñador muestra las tablas de la consulta o vista. Cada tabla se representa por una ventana dimensionable que muestra los campos de las tablas y los índices. El generador muestra las condiciones de combinación mostrando líneas que conectan los campos entre las tablas. Puede arrastrar campos indexados entre las tablas para crear condiciones de combinación. Haga doble clic en una línea para mostrar el cuadro de diálogo Condición de combinación para editar la condición. Opciones de la ficha Campos Especifica los campos, las funciones que desea agregar, como SUM o COUNT, u otras expresiones. Combinación Especifica expresiones de combinación para registros coincidentes entre dos o más tablas o vistas. Filtro Especifica condiciones para seleccionar registros, tales como valores específicos en un campo o condiciones de combinación que definen relaciones temporales entre tablas. Ordenar por Especifica los campos, las funciones agregadas como SUM o COUNT, u otras expresiones que se utilizan para configurar el orden de los registros seleccionados en la consulta. Agrupar por Especifica los campos, las funciones agregadas como SUM o COUNT, u otras expresiones que se utilizan para combinar registros en un grupo basado en idénticos valores en esos campos. Criterios de actualización Especifica las condiciones bajo las que se actualizan las vistas (Solamente en el Diseñador de vistas). Varios Especifica si se deben recuperar los duplicados y límites en los registros tales como la cantidad superior o porcentajes. Diseñador de informes Utilice el Diseñador de informes para crear y modificar informes. Cuando la ventana del Diseñador de informes está activa, Visual FoxPro muestra el menú Informe y la barra de herramientas Controles de informes. Para crear rápidamente una distribución simple de informe, elija Informe rápido del menú Informe. Informe rápido le solicita la entrada de los campos y la distribución que desea para su informe. Opciones de la ventana Bandas De forma predeterminada, el Diseñador de informes muestra tres bandas:: Encabezado de página, Detalle y Pie de página. En la parte inferior de cada banda hay una barra separadora. El nombre de la banda aparece en la barra gris junto a una flecha azul, que indica que la banda está encima, no debajo, de la barra gris. Puede agregar las siguientes bandas a su informe. Banda Se imprime Contenido típico Encabezado de columna Una vez por columna Título de columna Pie de columna Una vez por columna Resumen, totales Encabezado de grupo Una vez por grupo Precede los datos siguientes Pie de grupo Una vez por grupo Valores calculados para grupos de datos Título Una vez por informe Título Fecha o número de página Logotipo de la compañía Cuadro alrededor del título Resumen Una vez por informe Totales Texto como Suma total Regla El Diseñador de informes tiene una regla vertical y otra horizontal que puede utilizar para colocar de forma más precisa los objetos en las bandas. Utilice las reglas junto con el comando Mostrar posición del menú Ver para ayudarle en la colocación de los objetos. La escala de la regla viene determinada por las configuraciones de medidas de su sistema. Puede cambiar de la escala predeterminada del sistema (pulgadas o centímetros) a píxeles desde dentro de Visual FoxPro. Si desea cambiar al valor predeterminado del sistema, cambie la configuración de medidas de su sistema operativo. Para cambiar la escala de la regla Cambie esta unidad a píxeles haciendo lo siguiente: 1 Desde el menú Formato elija Configurar cuadrícula. Se muestra el cuadro de diálogo Configurar cuadrícula. 2 En el cuadro Escala de la regla seleccione Píxeles y elija Aceptar. La escala de la regla se configura a píxeles, y el indicador de posición de la barra de estado (si está activado Mostrar posición en el menú Ver) también muestra las posiciones en píxeles.